簡述Android的事件分發機制?技術博客大總結php
dispatchTouchEvent方法的做用是什麼?git
ViewGroup事件分發僞代碼github
View事件分發僞代碼面試
View和ViewGroup在dispatchTouchEvent上的區別segmentfault
onInterceptTouchEvent方法做用是什麼?markdown
View和ViewGroup在onInterceptTouchEvent上的區別:佈局
onTouchEvent的方法的做用是什麼?技術博客大總結post
滑動衝突有哪些場景?學習
滑動衝突處理原則動畫
滑動衝突解決辦法有哪些?技術博客大總結
外部攔截解決滑動衝突法
外部攔截法要點
onClick方法生效的兩個條件?
onTouch()、onTouchEvent()和onClick()關係是怎樣的,哪個先執行?
onTouch->onTouchEvent->onClick
若是設置了onClickListener, 可是onClick()沒有調用,可能產生的緣由? 技術博客大總結
View滑動有哪些方法?
Layout實現滑動
offsetLeftAndRight和offsetTopAndBottom實現滑動
LayoutParams實現滑動
用ViewGroup的MariginLayoutParams的方法去設置margin
//方法一:經過佈局設置在父控件的位置。可是必需要有父控件, 並且要指定父佈局的類型,很差的方法。 RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) getLayoutParams(); layoutParams.leftMargin = getLeft() + offsetX; layoutParams.topMargin = getTop() + offsetY; setLayoutParams(layoutParams); /**=============================================== * 方法二:用ViewGroup的MarginLayoutParams的方法去設置marign * 優勢:相比於上面方法, 就不須要知道父佈局的類型。
*===============================================*/ ViewGroup.MarginLayoutParams mlayoutParams = (ViewGroup.MarginLayoutParams) getLayoutParams(); mlayoutParams.leftMargin = getLeft() + offsetX; mlayoutParams.topMargin = getTop() + offsetY; setLayoutParams(mlayoutParams); ```
scrollToscrollBy實現滑動
scrollTo/By內部的mScrollX和mScrollY的意義
動畫實現滑動的方法
ViewDragHelper
事件的傳遞規則是什麼?
View處理事件的優先級?
點擊事件傳遞過程遵循以下順序?技術博客大總結
事件傳遞規則要點?
Scroller的做用?
Scroller的要點有哪些?
Scroller的使用步驟?
Scroller工做原理?技術博客大總結
Activity事件分發的過程?
Window事件分發?
DecorView的事件分發?
根View的事件分發?技術博客大總結
GestureDetector做用和注意點?
有哪些經常使用的監聽方法?
OnGestureListener
OnGestureListener做用技術博客大總結
OnGestureListener能監聽哪些手勢
OnDoubleTapListener
OnDoubleTapListener做用
OnDoubleTapListener能監聽哪些手勢?
View的滑動方式?
三種方式:
a. 經過View自己提供的scrollTo/scrollBy方法
b. 經過動畫給View施加平移效果實現滑動
c. 經過改變View的LayoutParams使View從新佈局實現滑動
MarginLayoutParams params = (MarginLayoutParams) mButton.getLayoutParams(); params.width += 10; params.height += 10; mButton.setLayoutParams(params);
三種方法的使用對比
scrollTo()和scrollBy()技術博客大總結
Scroller實現滑動的具體過程:
View工做流程
MeasureSpec做用技術博客大總結
經過寬測量值widthMeasureSpec和高測量值heightMeasureSpec決定View的大小
SpecMode有三類:
SurfaceView是從View基類中派生出來的顯示類,他和View的區別有: