<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(); } }