Android自定義View 百分比進(jìn)度動(dòng)畫(huà)

二話不說(shuō)!先來(lái)看效果!

1.gif

之前在群上見(jiàn)有小白問(wèn)怎么實(shí)現(xiàn)這個(gè)效果(不帶動(dòng)畫(huà)),于是就自己動(dòng)手寫(xiě)了一個(gè)自定義View并實(shí)現(xiàn)了進(jìn)度“動(dòng)畫(huà)”效果。

為啥“動(dòng)畫(huà)”帶引號(hào),因?yàn)樵谧远xView中沒(méi)有使用到動(dòng)畫(huà),而達(dá)到動(dòng)畫(huà)的效果是因?yàn)楦乱晥D實(shí)現(xiàn)的。

此篇文章需要有自定義View的基礎(chǔ)推薦個(gè)地址:https://github.com/GcsSloop/AndroidNote

下面開(kāi)始此View的思路代碼講解

       Paint mPaint1 = new Paint();//整體背景色
       Paint mPaint2 = new Paint();//進(jìn)度條黃色
       Paint mPaint3 = new Paint();//設(shè)置字體顏色
       Paint mPaint4 = new Paint();//透明色

首先自定義了四個(gè)畫(huà)筆

寫(xiě)了三個(gè)賦值方法


2

在自定義View上加文字讓其豎著居中,會(huì)有文字底部位于居中線上的情況,導(dǎo)致文字并沒(méi)有居中。上面代碼通過(guò)畫(huà)筆Paint算出居中位置。


3

算出View在屏幕中的百分比長(zhǎng)度,要拿 寬/100*Double = 長(zhǎng)度。由于Double計(jì)算不精確需要判斷在100%的情況下需要View寬度充滿屏幕。


4

mPaint4繪制透明進(jìn)度條(全長(zhǎng)),先繪制一條透明的View這個(gè)View的長(zhǎng)是最后確定的View長(zhǎng)。
mPaint2繪制的進(jìn)度條是動(dòng)畫(huà)的進(jìn)度條,在未確定View長(zhǎng)時(shí)繪制的長(zhǎng)


5

這是重點(diǎn)?。?!
下圖的代碼作用是:當(dāng)兩個(gè)值相等時(shí)讓之前繪制好的透明View mPaint4和mPaint2交換顏色,原因是由于RecyclerView的Adapter緩存和View 的postInvalidate()方法有莫名其妙的沖突會(huì)導(dǎo)致View長(zhǎng)度錯(cuò)亂,目前仍沒(méi)找到徹底解決的方法,有興趣的朋友可以下Demo把View換成ProportionView2和ProportionView3找一下問(wèn)題。


6

這是一個(gè)簡(jiǎn)單的自定義View,此篇文章結(jié)束,最后附上Demo地址:
https://github.com/NathansLiu/ProportionView

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,156評(píng)論 25 708
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,422評(píng)論 4 61
  • 《肖申克的救贖》無(wú)疑是我迄今看到的最好的電影。 人從自由淪落到不自由,可以艱難的忍受、適應(yīng),隨遇而安。 茍茍且且、...
    繭蝶2016閱讀 878評(píng)論 0 4
  • 這幾天一直在忙著找實(shí)習(xí)工作,本以為是一件比較容易的事情,沒(méi)想到來(lái)到學(xué)校一個(gè)星期了還沒(méi)確定下來(lái)。 昨天去面試之前已經(jīng)...
    草洛姑娘閱讀 493評(píng)論 0 0
  • GuoFuhui閱讀 508評(píng)論 0 1

友情鏈接更多精彩內(nèi)容