android 滾輪刻度尺的實現
剛剛看到一個實現稱一樣的視圖,覺得不錯,以後會用到。所以mark一下。
https://blog.csdn.net/ttdevs/article/details/38944799
抄一段人家文章,主要是為了記起來。看到的時候。
遇到一個需求需要實現如下圖的效果:
卷尺,通過左右滑動來選擇不同的刻度值。這方麵的東西以前沒弄過,以目前你的能力,想了幾種思路都死在了半路上。比如上麵的刻度線如何弄,滑動的時候又該如何弄;下麵的數字又如何弄;看起來像圓圈的效果該如何弄。時間緊迫,就倆晚上的時間。沒有好的思路就參考別人的先吧,說來也巧,兩天前剛看過一個日期選擇控件,還有以前看的一個仿IPhone滾動控件,效果類似:
本想找作者傲慢的上校交流下,但是時間比較緊,源碼都給了也不是很好意思。大致的瀏覽了下,可能涉及下麵幾個東西:
1、背景:這個用shape實現。之前有研究過,也用過,但是還沒實現過要求的效果;
2、刻度和數字:這個就不要亂想了,直接draw。相對來說還是比較簡單的,就是畫直線和數字;
3、滾動:滾動的時候不停的重繪實現一個滾動的效果。弄過,但是不確定實現的是啥樣的效果;
4、快速滾動:Scroller和VelocityTracker可能是需要用到的東西。幾乎完全沒弄過,騷年,學習吧(需求的要求中,這個優先級可以最低);
5、需求:刻度的單位是可以變的,比如十格一個單位,或者兩格一個單位,在或者可以是任意的(這個前期思路沒想好,實現起來就困難了,最後隻弄了兩種)。
其實,到了這一步基本上就已經可以實現了,看個最終效果先:
下麵就一步一步來。在這之前還有個地方要說的,就是控件的接口:對外提供一個方法實現控件初始化和接收控件選擇的值:顯示的單位,最大值,最小值,當前值,回調接口。有了這些,先從最難的入手。首先,實現刻度和數字,並可以滑動。這個地方很關鍵,每個人有每個人的思路,而且思路的好壞直接影響到後麵對不同單位的實現。目前的思路是根據當前顯示的數值mValue,從控件中間向兩邊畫刻度線,滑動的時候同時改變顯示的值mValue,不足最小刻度的四舍五入:
最後更新:2017-04-03 05:40:10