自定义View -- 刻度尺
【圖片】
這次在自定義View時主要通過以下幾個步驟:
1.準備階段(在構造方法處)
初始化各種默認的Paint,圖片資源。( 其中NinePatch資源需要通過Bitmap生成,繪制時調用ninePatch.draw )
2.確立區域
在onMeasure方法中,通過setMeasuredDimension方法設置測量的寬與高。主要注意MeasureSpec.AT_MOST的情況
3.獲取View的尺寸
在onSizeChanged,獲取View的寬高從而初始化各種尺寸。確定onDraw方法中要畫的各部分的位置。要注意padding值
4.進行繪制
這里主要調用Canvas的draw方法。
5.實現滑動事件
核心是確立中值(不是中間值,而且最靠近中間的值)。每次手指移動如果超過單位值,就會改變中間的值。而如果不超過,則記錄在一個成員變量里,作為繪制時中間值的偏移量。通過不斷的重繪而實現滑動效果
設置有效的事件區域。當Down事件觸摸的不是尺子的區域時直接返回false,將不會收到后續事件。
在有效的事件區域內,解決滑動沖突,去判斷是否有ViewParent,如果有就通過vp.requestDisallowInterceptTouchEvent去向父親請求事件。
6.實現慣性滑動
這樣通過使用VelocityTracker來測量手離開時的速度,如果超過一定速度(ViewConfiguration中有),則調用Scoller的fling方法做好慣性滑動的準備,然后讓View重繪,并在computeScroll中改變中值或者中值的便宜量并再次重繪就可。
?
未實現:各種擴展
轉載于:https://www.cnblogs.com/linzhe/p/5709524.html
總結
以上是生活随笔為你收集整理的自定义View -- 刻度尺的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《计算机图形学》2.2.2 光栅扫描显示
- 下一篇: 怪物猎人世界紫色任务