Android動(dòng)態(tài)自定義圓形進(jìn)度條
效果圖:
A.繪制圓環(huán),圓弧,文本
//1.畫(huà)圓環(huán) //原點(diǎn)坐標(biāo) float circleX = width / 2; float circleY = width / 2; //半徑 float radius = width / 2 - roundWidth / 2; //設(shè)置畫(huà)筆的屬性 paint.setColor(roundColor); paint.setStrokeWidth(roundWidth); paint.setStyle(Paint.Style.STROKE); canvas.drawCircle(circleX, circleY, radius, paint); //2.畫(huà)圓弧 RectF oval = new RectF(roundWidth/2,roundWidth/2,width-roundWidth/2,width - roundWidth/2); paint.setColor(roundProgressColor); canvas.drawArc(oval, 0, progress * 360 / max, false, paint); //3.畫(huà)文本 paint.setTextSize(textSize); paint.setColor(textColor); paint.setStrokeWidth(0); String text = progress * 100 / max + "%"; Rect bounds = new Rect(); paint.getTextBounds(text, 0, text.length(), bounds); canvas.drawText(text, width / 2 - bounds.width() / 2, width / 2 + bounds.height() / 2, paint);
B.自定義屬性的具體步驟
具體步驟:
1. 定義屬性: 在values目錄下創(chuàng)建attrs.xml
<declare-styleable name="RoundProgress"> <attr name="roundColor" format="color"></attr> <attr name="roundProgressColor" format="color"></attr> <attr name="textColor" format="color"></attr> <attr name="roundWidth" format="dimension"></attr> <attr name="textSize" format="dimension"></attr> </declare-styleable>
2. 在布局文件中引用當(dāng)前應(yīng)用的名稱(chēng)空間
xmlns:atguigu=http://schemas.android.com/apk/res-auto
3. 在自定義視圖標(biāo)簽中使用自定義屬性
<com.atguigu.p2p.util.RoundProgress android:id="@+id/rp_home_progress" android:layout_width="120dp" android:layout_height="120dp" android:layout_gravity="center_horizontal" android:layout_marginTop="20dp" atguigu:roundColor="@android:color/darker_gray <br> atguigu:roundProgressColor="@android:color/holo_red_dark" atguigu:textColor="@color/text_progress" atguigu:roundWidth="10dp" atguigu:textSize="20sp" />
4. 在自定義View類(lèi)的構(gòu)造方法中, 取出布局中的自定義屬性值
//1.得到所有自定義屬性的數(shù)組 TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.RoundProgress); //2.獲取自定義屬性的值, 如果沒(méi)有指定取默認(rèn)值 roundColor = typedArray.getColor(R.styleable.RoundProgress_roundColor, Color.RED); roundProgressColor = typedArray.getColor(R.styleable.RoundProgress_roundProgressColor, Color.GREEN); textColor = typedArray.getColor(R.styleable.RoundProgress_textColor, Color.GREEN); roundWidth = typedArray.getDimension(R.styleable.RoundProgress_roundWidth, UIUtils.dp2px(10)); textSize = typedArray.getDimension(R.styleable.RoundProgress_textSize, UIUtils.dp2px(20)); //3.釋放資源數(shù)據(jù) typedArray.recycle();
C.讓圓環(huán)進(jìn)度"動(dòng)起來(lái)"
1.自定義RoundProgress類(lèi)中提供進(jìn)度屬性的getter和setter方法
2.在HomeFragment的onSuccess()中:
github:https://github.com/ganchuanpu/P2PInvest
以上所述是小編給大家介紹的Android動(dòng)態(tài)自定義圓形進(jìn)度條,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Android?drawFunctor?原理及應(yīng)用詳情
這篇文章主要介紹了Android?drawFunctor原理及應(yīng)用詳情,drawFunctor是Android提供的一種在RenderThread渲染流程中插入執(zhí)行代碼機(jī)制,更多相關(guān)內(nèi)容需要的小伙伴可以參考一下2022-08-08Gradle?Build?Cache引發(fā)的Task緩存編譯問(wèn)題
這篇文章主要為大家介紹了Gradle?Build?Cache引發(fā)的Task緩存編譯問(wèn)題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06AndroidStudio不自動(dòng)添加新創(chuàng)建的文件到VCS的解決辦法
這篇文章主要介紹了AndroidStudio不自動(dòng)添加新創(chuàng)建的文件到VCS的解決辦法的相關(guān)資料,需要的朋友可以參考下2017-03-03Android 斷點(diǎn)下載和自動(dòng)安裝的示例代碼
本篇文章主要介紹了Android斷點(diǎn)下載和自動(dòng)安裝的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01Android 實(shí)現(xiàn)關(guān)機(jī)的多種方式
有段時(shí)間做系統(tǒng)hook時(shí)需要用到系統(tǒng)重啟,找了幾種重啟的方法,還有幾種關(guān)機(jī)的方法,總結(jié)一下,有此需求的同學(xué)可以選擇適合自己的方式2021-05-05安卓逆向騰訊動(dòng)漫app返回?cái)?shù)據(jù)加密分析案例分享
這篇文章主要為大家介紹了安卓逆向騰訊動(dòng)漫app返回?cái)?shù)據(jù)加密分析的案例分享,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02