1.设置布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ProgressBar
android:id="@+id/ProgressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:visibility="gone"
/>
<Button
android:id="@+id/Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始"/>
</LinearLayout>
2.处理progressbar的类
public class ProgressBarTestActivity extends Activity {
/** Called when the activity is first created. */
private ProgressBar bar;
private Button startButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 得到ProgressBar
bar = (ProgressBar) findViewById(R.id.ProgressBar);
startButton = (Button) findViewById(R.id.Button);
// 当按钮按下时开始执行
startButton.setOnClickListener(new ButtonListener());
}
class ButtonListener implements OnClickListener {
public void onClick(View v) {
bar.setVisibility(View.VISIBLE);
updateBarHandler.post(updateThread);
}
}
Handler updateBarHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
bar.setProgress(msg.arg1);
updateBarHandler.post(updateThread);
}
};
Runnable updateThread = new Runnable() {
int i = 0;
public void run() {
System.out.println("begin thread");
i = i + 10;
// 得到一个消息对象
Message msg = updateBarHandler.obtainMessage();
msg.arg1 = i;
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
updateBarHandler.sendMessage(msg);
if (i == 100) {
updateBarHandler.removeCallbacks(updateThread);
}
}
};
}
效果如图:

本文介绍了如何在Android应用中创建并控制一个进度条动画,包括设置布局文件、处理进度条类以及实现动画效果。
796

被折叠的 条评论
为什么被折叠?



