-
測量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。一般我們參考系統(tǒng)代碼這樣實現(xiàn):當?shù)谌齻€手指移開時第一個手指變?yōu)?ActivePointer,如果此時移開的不是ActivePointer則不會改變。查看全部
-
繪制onDraw 只需繪制內(nèi)容,無需考慮繪制背景,背景已經(jīng)給你繪制過了。 大多數(shù)的ViewGroup都不需要考慮onDraw()。查看全部
-
布局onLayout(ViewGroup) 是父控件去決定子View的顯示位置查看全部
-
測量onMeasure 調(diào)用requestLayout()即可觸發(fā)測量查看全部
-
自定義屬性聲明與獲取查看全部
-
還有什么查看全部
舉報
0/150
提交
取消