要实现这样一个动画的时候,可以用seekbar来实现,seekbar 的seekbar.setProgress()和seekbar.setSecondaryProgress()方法可以让我们实现这个方法,下面是具体实现的代码
<ProgressBar
android:id="@+id/pb_upload"
android:indeterminate="false"
android:indeterminateOnly="false"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:max="500"
android:progress="0"
android:secondaryProgress="80"
android:progressDrawable="@drawable/progressbar"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true" />
drawable目录下新建一个progressbar.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>
<solid
android:color="#E1E1E1"/><!-- backgroundColor -->
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<solid
android:color="#00CCCC"/><!-- 滑块的颜色 -->
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<solid
android:color="#E1E1E1"/><!-- 填充的颜色 -->
</shape>
</clip>
</item>
</layer-list>
public class MainActivity extends Activity {
private Timer mTimer;
private int i;
private ProgressBar uploadPb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
uploadPb = (ProgressBar) findViewById(R.id.pb_upload);
i = 0;
mTimer = new Timer();
setTimerTask();
}
private void setTimerTask() {
mTimer.schedule(new TimerTask() {
@Override
public void run() {
Message message = new Message();
message.what = 1;
doActionHandler.sendMessage(message);
}
}, 0, 10);//0ms后 10ms执行一次
}
private Handler doActionHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int msgId = msg.what;
switch (msgId) {
case 1:
if (i <= 420) {
uploadPb.setProgress(i);
uploadPb.setSecondaryProgress(i + 80);
i++;
} else {
i = 0;
}
break;
default:
break;
}
}
};
}