1. 程式人生 > >Android 制作類似支付圓圈和打鉤界面ProgressWheel

Android 制作類似支付圓圈和打鉤界面ProgressWheel

handle 方法 style tick 打開 延遲 程序 修改 ssa

首先要說明的是,制作圓圈旋轉的效果並不是博主做的,是參照了github上的一個代碼,只是在上面添加了修改,對其優化並增加了一個打鉤的動畫。

先來看下效果,1+的手機獲取root權限真是難,沒法錄屏,只能使用這種截屏生成git的笨辦法,其實運行起來還是很流暢的。

技術分享

這是代碼github的地址:

git clone https://github.com/LxxCaroline/ProgressWheelView.git

這是圓圈旋轉代碼的github地址:

git clone https://github.com/pnikosis/materialish-progress.git  

我對原作者代碼的修改是

1.原作者是在onDraw函數中直接調用invalidate,會導致界面平凡刷新,特別是當你打開這個開發者選項中的設置,再回到應用程序的界面,發現他在頻繁刷新。老板給我的建議是每次延遲刷新,使用handler.sendMessageDelay(Message, DelayMills),在handler的handleMessage方法中調用invalidate方法,在onDraw函數中發送消息給handler即可,只要在16ms內刷新不掉幀不卡頓就好了。

技術分享

2.打鉤的動畫是我主要的修改,分為兩條直線去畫。下面是我的設計稿,中間小的方框的邊長就是代碼中的tickSize,所以每次繪畫的時候會先去找圓心,然後以圓心為中心去繪制正方形,分別繪制勾的兩條線,先畫短的,畫完短的再開始畫長的。

代碼中都有註釋,大家自己看吧

技術分享

Android 制作類似支付圓圈和打鉤界面ProgressWheel