二話不說恶复!先來看效果衣迷!
之前在群上見有小白問怎么實現這個效果(不帶動畫)耕渴,于是就自己動手寫了一個自定義View并實現了進度“動畫”效果朽色。
為啥“動畫”帶引號邻吞,因為在自定義View中沒有使用到動畫,而達到動畫的效果是因為更新視圖實現的葫男。
此篇文章需要有自定義View的基礎推薦個地址:https://github.com/GcsSloop/AndroidNote
下面開始此View的思路代碼講解
Paint mPaint1 = new Paint();//整體背景色
Paint mPaint2 = new Paint();//進度條黃色
Paint mPaint3 = new Paint();//設置字體顏色
Paint mPaint4 = new Paint();//透明色
首先自定義了四個畫筆
寫了三個賦值方法
在自定義View上加文字讓其豎著居中抱冷,會有文字底部位于居中線上的情況,導致文字并沒有居中梢褐。上面代碼通過畫筆Paint算出居中位置旺遮。
算出View在屏幕中的百分比長度,要拿 寬/100*Double = 長度盈咳。由于Double計算不精確需要判斷在100%的情況下需要View寬度充滿屏幕耿眉。
mPaint4繪制透明進度條(全長),先繪制一條透明的View這個View的長是最后確定的View長鱼响。
mPaint2繪制的進度條是動畫的進度條鸣剪,在未確定View長時繪制的長
這是重點!U苫筐骇!
下圖的代碼作用是:當兩個值相等時讓之前繪制好的透明View mPaint4和mPaint2交換顏色,原因是由于RecyclerView的Adapter緩存和View 的postInvalidate()方法有莫名其妙的沖突會導致View長度錯亂江滨,目前仍沒找到徹底解決的方法铛纬,有興趣的朋友可以下Demo把View換成ProportionView2和ProportionView3找一下問題。
這是一個簡單的自定義View唬滑,此篇文章結束告唆,最后附上Demo地址:
https://github.com/NathansLiu/ProportionView