ProgressBar、Handler的简单使用

来源:互联网 发布:淘宝购物星级为啥降了 编辑:程序博客网 时间:2024/06/11 22:25

<1.XML布局文件>

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <ProgressBar        android:layout_marginTop="10dp"        android:layout_width="match_parent"        android:layout_height="wrap_content"        style="?android:attr/progressBarStyleHorizontal"        android:id="@+id/progressbar"        android:max="100"/>    <Button        android:id="@+id/star"        android:layout_width="80dp"        android:layout_height="60dp"        android:text="开始"        android:gravity="center"        android:textSize="24.0sp"/></LinearLayout>

<2.源代码>

public class MainActivity extends AppCompatActivity {    //进度条    private ProgressBar progressBar;    //开始按钮    private Button button;    //设置进度条的初始值    private int counnt=0;    //子线程与主线程通信    private Handler handler;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init();        //对开始按钮的监听        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //调用线程用来通信                start();            }        });        //实例化handler与主线程通信  <特别注意,只能在主线程实例化>        handler=new Handler(){            @Override            public void handleMessage(Message msg) {                //判断是哪个子线程发来的信息                switch (msg.what){                    case 1:                        progressBar.setProgress((Integer) msg.obj);                        break;                }            }        };    }    //实例化控件    private void init(){        progressBar= (ProgressBar) findViewById(R.id.progressbar);        button= (Button) findViewById(R.id.star);    }    //开启一个子线程    private void start(){        new Thread(){            @Override            public void run() {                while (counnt<=100){                    Message msg=new Message();                    //给当前线程添加标签                    msg.what=1;                    //赋值                    msg.obj=counnt;                    //发送信息                    handler.sendMessage(msg);                    counnt++;                    try {                        //每赋值一次休眠200毫秒                        sleep(200);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                }            }        }.start();    }}

1 0
原创粉丝点击