閱讀695 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go 處理:Header V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY error: Failed dependencies:
  下一篇:go android捕獲程序異常退出