目錄
一.View的基礎
1.view的基礎概念
2.view的位置和事件event幾種表示法
3.view的滑動
①.ScrollTo、ScrollBy:
②.佈局位置(layout,offsetLeftAndRight,offsetTopAndBottom)
③.佈局參數(LayoutParams)
4.view的彈性滑動
①.Scroller+computeScroll+scrollTo
②.動畫
③.延時策略(Handler,view.postDelayed)
5.速度跟蹤
①.VelocityTracker:速度追蹤,可以判斷控件或者頁面是否快速滑動。
二.動畫
1.view動畫:平移縮放旋轉淡入淡出動畫(補間動畫),幀動畫。
2.幀動畫:順序播放一組預先定義好的圖片,類似電影播放。
3.屬性動畫:在一段時間內完成對象的一個屬性值改變成另一個屬性值。
①.比如:xml方式示例如下
②.一些常用的可以直接使用的屬性動畫的屬性值(平移,旋轉,透明,縮放)
③.插值器和估值器。
④.屬性動畫的監聽器(AnimatorUpdateListener和AnimatorListener)
⑤.對任意屬性進行動畫。
⑥.ValueAnimator與ObjectAnimator過程區別:
4.使用動畫注意事項:幀動畫oom,屬性動畫內存泄漏,view動畫清理
三.View的事件分發機制
1.MotionEvent和TouchSlop
2.GestureDetector、OnDoubleTapListener
3.事件分發機制(重點):事件分發過程dispatchTouchEvent,onIntercepteTouchEvent,onTouchEvent;
4.事件滑動衝突
四.View的相關源碼解析
1.源碼解析Activity的構成(解析activity的setContentView方法)
2.View的工作流程
①.view工作流程入口
②.measure的流程
③.layout的流程
五.自定義View
1.繼承系統控件的自定義View
①.先實現繼承TextView的自定義TextView
②.然後在佈局文件中使用
③.最後實現效果
2.繼承View的自定義View
②.將這個矩形添加對padding的支持
③.根據前面的講解知道wrap_content與match_parent對於View的效果是一樣的,所以可以對wrap_content進行特殊處理
④.自定義屬性
3.自定義組合控件
4.自定義ViewGroup
①.繼承ViewGroup,實現構造方法和抽象方法等
②.實現測量過程,由於是類似ViewPager,所以在AT_MOST的時候高度是子佈局的高度,寬度是子佈局的寬度相加,測量過程實現如下
③.實現onLayout,子元素的由左向右排列,所以top為0,bottom為子元素高度不變,left和right是一直相加從左到右排列
④.處理滑動衝突
⑤.彈性滑動到其他界面
⑥.快速滑動到其他界面
⑦.再次觸摸屏幕阻止頁面繼續滑動,在手勢抬起然後界面滑動過程再次點擊需要讓其不在滑動。
5.其他常見的自定義View
①.ScrollView內嵌ListView顯示不全問題(只顯示ListView的一行item)
一.View的基礎 1.view的基礎概念 view:android中所有控件的基類。 viewGroup:控件組。 2.view的位置和事件event幾種表示法 ①.view.getLeft(),view.getRight(),view.getTop(),view.getBottom():相對父佈局的位置參數 ②.view.getX(),view.getY():相對父佈局左上角的座標,getX() = getLeft()+getTranslationX() ③.view.getTranslationX(),view.getTranslationY():相對於原始位置的偏移量,例如:屬性動畫讓其偏移後產生的偏移座標 ④.event.getX(),event.getY():觸摸事件相對父佈局左上角的座標(view中motionEvent參數的位置) ⑤.event.getRawX,event.getRawY():觸摸事件相對屏幕左上角的座標(view中motionEvent參數的位置) ————————————————
版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
全文鏈接:https://blog.csdn.net/gongjdde/article/details/128106660