-
测量onMEasure查看全部
-
自定义属性声明与获取查看全部
-
自定义空间步骤查看全部
-
为什么安卓要自定义控件查看全部
-
1. custom attribute * declare res/values/attrs.xml * layout xml * View constructor context.obtainStyledAttributes 2. onMeasure: Get height and width * EXACTLY, AT_MOST (wrap_content), UNSPECIFIED (e.g. scroll view, list view) * MeasureSpec * setMeasuredDimension * requestLayout(): trigger onMeasure() 3. onLayout (ViewGroup) * Decide the position of sub-views * Only trigger once, put calculate from onMeasure() to onLayout() as much as possible * requestLayout(): trigger onLayout() 4. onDraw * Draw content, no need to consider background * invalidate(), postInvalidate() * Canvas.drawXXX * Canvas methods: translate, rotate, scale, skew * remember to `save()`, `restore()` 5. onTouchEvent- trace source code of `ScrollView` * parent.requestDisallowInterceptTouchEvent(true) * tell parent don't intercept the touch event 6. onInterceptTouchEvent (ViewGroup) * decide to intercept the touch events or not查看全部
-
onTouchEvent查看全部
-
1、自定义熟悉的声明与获取 2、测量onMeasure 3、布局onLayout(viewGroup) 4、绘制onDraw 5、onTouchEvent 6、OnInterceptTouchEvent、查看全部
-
补充: 参考另一个视频教程,仿微信6.0 ...查看全部
-
onInterceptTouchEvent(ViewGroup)查看全部
-
onTouchEvent 如果需要和用户交互,则还要覆写此方法 当要考虑多点触控时,在每个时刻只存在一个 ActivePointer 。当只有一个手指时那么第一个手指为 ActivePointer,此时当按下第二个手指时第个手指成为ActivePointer,当按下第三个手指时第三个手指成为ActivePointer。 当ActivePointer被移开时我们需要控制让其它手指成为ActivePointer。一般我们参考系统代码这样实现:当第三个手指移开时第一个手指变为 ActivePointer,如果此时移开的不是ActivePointer则不会改变。查看全部
-
绘制onDraw 只需绘制内容,无需考虑绘制背景,背景已经给你绘制过了。 大多数的ViewGroup都不需要考虑onDraw()。查看全部
-
布局onLayout(ViewGroup) 是父控件去决定子View的显示位置查看全部
-
测量onMeasure 调用requestLayout()即可触发测量查看全部
-
自定义属性声明与获取查看全部
-
还有什么查看全部
举报
0/150
提交
取消