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

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

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

ProgressBar进度条

<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 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>
其中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 详细

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);
}

标签: none