用Thread和Handler控制ProgressBar的进度
public class HandlerProgressBarAty extends Activity{
private int i = 0;
private ProgressBar mProgressBar;
private android.os.Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
mHandler.postDelayed(mThread, 1000);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pb);
mProgressBar = (ProgressBar) findViewById(R.id.pb);
Button btn_download = (Button) findViewById(R.id.btn_download);
btn_download.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mProgressBar.setVisibility(View.VISIBLE);
mHandler.post(mThread);
}
});
}
private Thread mThread = new Thread(new Runnable(){
@Override
public void run() {
i = i + 10;
mProgressBar.setProgress(i);
Message msg = mHandler.obtainMessage();
msg.arg1 = i;
mHandler.sendMessage(msg);
if(i > 100){
mHandler.removeCallbacks(mThread);
}
}
});
}
可参照 关于Thread和Handler的简单使用(一)
分享到:
相关推荐
本教程将深入探讨如何利用`Handler`消息机制来实现`ProgressBar`的动态更新,展示进度条中进度和数值的变化。 `ProgressBar`有两种主要类型:线性(Linear)和圆形(Circular)。线性`ProgressBar`通常用于表示任务...
本教程将深入讲解如何在Android项目中简单使用ProgressBar。 首先,我们需要在布局XML文件中添加ProgressBar。在`res/layout`目录下的某个布局文件(例如activity_main.xml)中,我们可以插入一个水平的确定性...
在TargetActivity或Service中,你可以使用AsyncTask、Thread或Handler来执行后台任务,并通过回调或者BroadcastReceiver的方式更新主线程中的ProgressBar。 例如,使用AsyncTask: ```java private class MyTask ...
ProgressBar的使用主要涉及到XML布局文件和Java代码。在布局文件中,我们可以声明一个ProgressBar,设置其ID、样式和属性。例如: ```xml <ProgressBar android:id="@+id/progressBar" android:layout_width=...
本示例中,“Handler的使用”主要是讲解如何利用`Handler`来更新`ProgressBar`的进度,使得进度条每秒钟能动态地显示进度变化。 `Handler`的工作原理基于消息队列(Message Queue)和Looper。当在一个线程(如主线...
通过阅读`Thread0_Project`压缩包中的项目代码,可以深入理解`Thread`和`ProgressBar`在实际应用中的使用方式,包括如何创建线程、管理任务、更新UI以及处理进度变化等细节。这将有助于提升你的Android应用开发技能...
以下是关于Handler使用相关的三个实例所体现的知识点的详细解释: 1. **Handler的创建和工作原理** Handler的创建通常需要配合Looper。Looper是每个线程中的消息循环器,它负责接收并分发Message。在主线程中,...
- **后台任务**:在单独的线程中执行耗时操作,例如使用Java的`Thread`、Android的`AsyncTask`或`Handler/Looper`机制。 - **线程同步**:通过回调、事件监听或异步方法结果来通知主线程更新ProgressBar的进度。 ...
下面是一个简单的`Handler`使用示例: ```java class MainActivity extends AppCompatActivity { private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { // 更新...
- **简单易用**:Handler的API设计简洁明了,易于理解和使用。 总的来说,Handler是Android开发者在进行多线程编程和UI更新时的一个强大工具。掌握Handler的使用,对于提高Android应用的性能和用户体验至关重要。
* 该Demo涉及了BaseAdapter,ProgressBar,Handler,Thread,线程池; * * Android-扩展BaseAdapter实现progressBar下载 * 1.创建listview的xml * 2.创建listview中填充的xml * 3.创建继承BaseAdapter的...
本篇文章将详细解析标题和描述中提到的三个`Handler`小例子:最简单的示例、进度条更新以及随机变换`TextView`字体颜色。 ### 1. 最简单的`Handler`示例 在Android应用中,`Handler`通常配合`Looper`和`Message`...
此外,Android还提供了`AsyncTask`或者`Thread`结合`Handler`来更新进度条,模拟后台任务的执行。例如: ```java class LoadTask extends AsyncTask, Integer, Void> { @Override protected Void doInBackground...
在Android开发中,当执行耗时操作如网络请求、大文件下载或数据库操作时,为了提升用户...不过,理解ProgressDialog和Handler的配合使用仍然是Android开发中的重要技能,因为很多现有的代码库和教程仍然使用这种方法。
开发者通常会在`MainActivity.java`中控制进度条的显示和更新,可能通过异步任务(`AsyncTask`)、线程(`Thread`)或者Handler来模拟或更新进度。 为了实现自定义`ProgressBar`,开发者可能会使用以下方法: 1. ...
在"ProgressBarHandler"这个示例中,可能包含了如何使用HandlerThread、AsyncTask和Handler来更新进度条的代码。具体实现可能包括创建HandlerThread并启动,然后在新线程中执行任务,通过Handler发送消息到主线程...
由于Android的单线程模型,直接在后台线程更新UI是不允许的,这时就需要用到Handler、Looper和Message机制来实现跨线程通信,特别是用于模拟进度条更新,让用户体验更加友好。本篇文章将深入探讨如何使用Android ...
以下是一个简单的`Handler`使用示例,展示了如何更新`ProgressBar`: ```java // 创建Handler实例,关联主线程的Looper Handler handler = new Handler() { @Override public void handleMessage(Message msg) { ...