您的位置:首页 > 其它

老罗(18)发送Handler更新ProgressBar

2016-02-29 12:03 267 查看
首先:点击start更新进度条

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="match_parent" >
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
style="?android:attr/progressBarStyleHorizontal" />

<Button
android:id="@+id/start_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="start" >
</Button>
</LinearLayout>


public class MainActivity extends Activity {

private Button mStartBtn;
private ProgressBar mProgressBar;
UpdateHandler mHandler = new UpdateHandler();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mStartBtn = (Button)findViewById(R.id.start_btn);
mProgressBar = (ProgressBar)findViewById(R.id.progressBar);
mStartBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//点击start按钮后,显示progressBar
mProgressBar.setVisibility(View.VISIBLE);
//执行Runnable中的run方法
mHandler.post(updateRunnalbe);
}
});
}
Runnable updateRunnalbe  = new Runnable() {
int i = 0;
@Override
public void run() {
i = i + 10;
Message msg = mHandler.obtainMessage();
msg.what = 0x2016;
msg.arg1 = i;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//当进度条等于100时停止发送消息
if(i > 100){
return;
}
Log.d("xiaoxi","updateRunnalbe");
//执行UpdateHandler中的handlerMessage方法
mHandler.sendMessage(msg);
}
};
class UpdateHandler extends Handler{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
mProgressBar.setProgress(msg.arg1);
mHandler.post(updateRunnalbe);
}
}
}


Handler相关参考:

Android(14)Handler简单例子(1)

Handler(15):工作线程向主线程发送消息

线程相关参考Java4Android

java4Android(17)(18) 多线程两种实现方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: