废话不多说,直接上代码
package com.dean;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.SeekBar;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView panel = null;
private SeekBar seekBar = null;
private MyThread1 myThread = null;
private MyHandler handler = null;
private Message message = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
panel = (TextView) findViewById(R.id.panel);
seekBar = (SeekBar) findViewById(R.id.seekbar);
handler = new MyHandler();
myThread = new MyThread1();
handler.post(myThread);
}
class MyThread1 extends Thread {
int i = 0;
@Override
public void run() {
message = new Message(); //创建一个message对象,包含需要更新的信息
message.arg1 = i;
i++;
System.out.println(i);
handler.sendMessage(message); //发送message对象
try{ //每隔一秒发送一次
Thread.sleep(1*1000);
}catch(Exception e){
e.printStackTrace();
}
}
}
class MyHandler extends Handler {
@Override
public void handleMessage(Message msg) { //接收子线程传过来的参数并且操作UI线程中的UI控件
super.handleMessage(msg);
System.out.println(msg.arg1 + "---->");
panel.setText(msg.arg1 + "%");
seekBar.setProgress(msg.arg1); //设置进度条的进度
handler.post(myThread);
if (msg.arg1 == 100) { //如果进度条推进完毕,则移除消息队列中所有的线程对象
handler.removeCallbacks(myThread);
return;
}
}
};
}
布局文件:
<?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">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello"
android:id="@+id/panel" />
<SeekBar android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/seekbar" />
</LinearLayout>