使用studio写一个进度条:
1.首先定义一个帧布局
2.在帧布局中定义一个TextView用来显示进度条的数字提示
3.在进度条中定义一个进度条
4.在帧布局之外定义一个按钮
<!--帧布局--> <FrameLayout android:layout_width="match_parent" android:layout_height="30dp"> <!--文字--> <TextView android:id="@+id/main_tevi_v1" android:layout_width="30dp" android:layout_height="match_parent" /> <!--进度条--> <ProgressBar style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/main_pbr_pb1" android:max="100" /> </FrameLayout> <!--按钮--> <Button android:layout_width="match_parent" android:onClick="Button" android:id="@+id/main_but_but1" android:layout_height="wrap_content" />
6.在按钮Button中定义点击事件,当点击这个按钮的时候
进度条开始走动
7. 线程注意事项:
不能在主线程中执行耗时的操作,只能在子线程中操作
另外,在子线程中不能操作主线程中的控件(ProgressBar(进度条)除外)
如果想在子线程中操作主线程中的控件就要用到(handler)
private ProgressBar main_pbr_pb1; //进度条
private TextView main_but_but1; //按钮
private int p=0;
private MyHandler MyHandler=new MyHandler(); //MyHandler
private class MyHandler extends Handler {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==1){
main_pbr_pb1.setProgress(p++);
main_but_but1.setText(p+"%");
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//进度条
main_pbr_pb1=this.findViewById(R.id.main_pbr_pb1);
//按钮
main_but_but1=this.findViewById(R.id.main_but_but1);
}
public void Buttion(View view) { //点击事件
if(p==0){
new MyThread().start(); //子线程启动
}
}
//子线程
private class MyThread extends Thread{
@Override
public void run() {
super.run();
while(true){
try {
Thread.sleep(100);//睡眠0.1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
if(p==100){ //p等于一百时退出循环
p=0;
break;
}
Message msg=new Message();
msg.what=1;
//调用MyHandler方法
MyHandler.sendMessage(msg);
}
}
}
然后就是成果了:
点击之后是这样的: