Android studio进度条 线程的使用

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




        }
    }


然后就是成果了:
这里写图片描述

点击之后是这样的:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/zimuliusu/article/details/82730696