總共介紹兩種方式互艾,一種是在xml文件中寫死的红符,一種是java代碼動態(tài)設(shè)置的正罢,第二種的優(yōu)勢就是可以動態(tài)設(shè)置,比如根據(jù)用戶設(shè)置或者后臺回傳的樣式來動態(tài)進(jìn)行設(shè)置趣兄。
第一種 xml 設(shè)置
直接 drawable 文件夾下新建一個 xml 文件绽左,配置代碼如下:
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="5dp" />
<solid android:color="#E4E7ED" />
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="5dp" />
<solid android:color="#E4E7ED" />
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="5dp" />
<solid android:color="#409EFF" />
</shape>
</clip>
</item>
</layer-list>
設(shè)置background, secondaryProgress艇潭, progress的顏色和弧度值拼窥。
然后在布局文件中設(shè)置進(jìn)去
<ProgressBar
android:id="@+id/install_progress"
style="?android:attr/progressBarStyleHorizontal"
android:progressDrawable="@drawable/progress"
android:layout_width="match_parent"
android:layout_height="4dp"/>
第二種 java代碼動態(tài)設(shè)置
原理一樣戏蔑,在代碼中給 Drawable 設(shè)置背景和弧度值,最后設(shè)置給 progressBar闯团,下邊附上代碼:
int roundRadius = 8; // 圓角半徑 The x-radius of the oval used to round the corners
//準(zhǔn)備progressBar帶圓角的背景Drawable
GradientDrawable progressBg = new GradientDrawable();
//設(shè)置圓角弧度
progressBg.setCornerRadius(roundRadius);
//設(shè)置繪制顏色
progressBg.setColor(Color.parseColor("#E4E7ED"));
//準(zhǔn)備progressBar帶圓角的進(jìn)度條Drawable
GradientDrawable progressContent = new GradientDrawable();
progressContent.setCornerRadius(roundRadius);
//設(shè)置繪制顏色辛臊,此處可以自己獲取不同的顏色
progressContent.setColor(Color.parseColor("#409EFF"));
//ClipDrawable是對一個Drawable進(jìn)行剪切操作,可以控制這個drawable的剪切區(qū)域房交,以及相相對于容器的對齊方式
ClipDrawable progressClip = new ClipDrawable(progressContent, Gravity.START, ClipDrawable.HORIZONTAL);
//設(shè)置progressBarDrawable
progress.setProgressDrawable(progressClip);
progress.setBackground(progressBg);
這樣即可實(shí)現(xiàn)彻舰,當(dāng)時progressBar也可以在代碼中動態(tài)生成,然后動態(tài)設(shè)置位置候味,都是可以的刃唤,根據(jù)自己的需求來實(shí)現(xiàn)即可。