炫酷进度条:Android 仿应用宝下载进度条
本文由FlowLeaf授權本公眾號發布。
FlowLeaf的博客地址:
http://blog.csdn.net/u011102153
介紹
? ?
一個橫向進度條
下載完成區域有一個滑塊不斷從左往右滑動(最開始就是被這個吸引的,就想著這個怎么實現的)
進度條中間顯示當前進度,值得注意的是,進度條文本包含在下載區域中的部分顯示為白色
點擊暫停,進度條顏色改變,進度文本改變
分析
??根據以上簡單介紹,可以抓住要實現的重難點是上面的第2、3點。
1.進度條文本包含在下載區域中的部分顯示為白色怎么實現?這個和歌詞變色的效果是一樣的,所以實現原理應該差不多。canvas有一個save的方法,然后設置成CLIP_SAVE_FLAG標志,這個標志的解釋是restore the current clip when restore() is called.然后結合canvas的clip方法和restore方法就能實現。后文見代碼④。
2.下載完成區域有一個滑塊不斷從左往右滑動怎么實現?首先想到的是畫這樣一個滑塊(其實是一張圖片),然后不斷根據當前進度修改位置實現移動。需要注意的是這個滑塊的移動特點: 滑塊的右邊界開始進入,最后左邊界消失,而且只在下載完成這個區域內有顯示(右邊界超出下載完成右邊界部分不顯示)這讓我想到兩個圖層重疊時的顯示模式,再看看這幅圖,那么這里就可以使用SRC_ATOP模式。
實現
? ?1.自定義屬性
2.重寫onMeasure方法,當height設置為wrap_content時設置為默認高度
3.重寫onDraw方法
①繪制邊框
②繪制進度
③繪制進度條顯示文本
④進度條文本變色處理
最終的效果圖是:
源碼下載:
-
https://github.com/LineChen/FlickerProgressBar
其實上述代碼還有很大的優化空間,歡迎留言討論,該博主也專門針對優化寫了一篇:
http://blog.csdn.net/u011102153/article/details/52583313
掘金是一個高質量的技術社區,從 RxJava 到 React Native,性能優化到優秀開源庫,讓你不錯過 Android 開發的每一個技術干貨。長按圖片二維碼識別或者各大應用市場搜索「掘金」,技術干貨盡在掌握中。
如果你有好的文章想和大家分享,歡迎投稿,直接向我投遞文章鏈接即可。
歡迎長按下圖->識別圖中二維碼或者掃一掃關注我的公眾號:
閱讀原文總結
以上是生活随笔為你收集整理的炫酷进度条:Android 仿应用宝下载进度条的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 监控工具普罗米修斯(Prometheus
- 下一篇: 亚马逊跨境电商如何运营模式?