Android自定義View 百分比進度動畫

NathansLiu發表於2017-12-23

Android自定義View 百分比進度動畫

之前在群上見有小白問怎麼實現這個效果(不帶動畫),於是就自己動手寫了一個自定義View並實現了進度“動畫”效果。

為啥“動畫”帶引號,因為在自定義View中沒有使用到動畫,而達到動畫的效果是因為更新檢視實現的。

此篇文章需要有自定義View的基礎推薦個地址:github.com/GcsSloop/An…

下面開始此View的思路程式碼講解

        Paint mPaint1 = new Paint();//整體背景色
       Paint mPaint2 = new Paint();//進度條黃色
       Paint mPaint3 = new Paint();//設定字型顏色
       Paint mPaint4 = new Paint();//透明色複製程式碼

首先自定義了四個畫筆

寫了三個賦值方法

Android自定義View 百分比進度動畫

在自定義View上加文字讓其豎著居中,會有文字底部位於居中線上的情況,導致文字並沒有居中。上面程式碼通過畫筆Paint算出居中位置。

Android自定義View 百分比進度動畫

算出View在螢幕中的百分比長度,要拿 寬/100*Double = 長度。由於Double計算不精確需要判斷在100%的情況下需要View寬度充滿螢幕。

Android自定義View 百分比進度動畫

mPaint4繪製透明進度條(全長),先繪製一條透明的View這個View的長是最後確定的View長。
mPaint2繪製的進度條是動畫的進度條,在未確定View長時繪製的長

Android自定義View 百分比進度動畫

這是重點!!!
下圖的程式碼作用是:當兩個值相等時讓之前繪製好的透明View mPaint4和mPaint2交換顏色,原因是由於RecyclerView的Adapter快取和View 的postInvalidate()方法有莫名其妙的衝突會導致View長度錯亂,目前仍沒找到徹底解決的方法,有興趣的朋友可以下Demo把View換成ProportionView2和ProportionView3找一下問題。

Android自定義View 百分比進度動畫

這是一個簡單的自定義View,此篇文章結束,最後附上Demo地址:
github.com/NathansLiu/…


Android自定義View 百分比進度動畫




相關文章