android ProgressBar样式

发布时间 2023-11-11 22:14:38作者: 乌清远wqy

**实现进度条由浅黄(#ffff33)到深黄色(#ff6600)的渐变样式。**

**与进度条自动从0加载到99,进度条每次加1**

- `android:max`:进度条的最大值。
- `android:progressDrawable`:设置轨道对应的`Drawable`对象。
- style="@android:style/Widget.ProgressBar.Horizontal" 设置**水平进度条**

ProgressBar进度条

```xml
<ProgressBar
android:id="@+id/St_Bar"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="40dp"
android:max="100"
android:progressDrawable="@drawable/my_pb" />
```

my_pb.xml

```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">
<color android:color="#ffffff" />
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<gradient
android:startColor="#ffff33"
android:endColor="#ff6600"/>
</shape>
</clip>
</item>
</layer-list>
```

```xml
其中gradient为渐变色设置
<gradient android:startColor="#ffff33"
android:endColor="#ff6600"/>
@android:id/background 为进度条背景颜色id
<item android:id="@android:id/background"/>
@android:id/progress 为进度条本身的颜色设置
<item android:id="@android:id/progress"/>
```

**进度条自动从0加载到99,进度条每次加1**

应用了Handler [详细](8)

```java
ProgressBar St_Bar;
private final Handler handler = new Handler(Looper.myLooper()){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
if (msg.what == 0) {
St_Bar.incrementProgressBy(1);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
St_Bar = findViewById(R.id.St_Bar);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(0);
}
},0,50);
}
```