`
LoveZhou
  • 浏览: 272762 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android Handler模拟进度条更新

阅读更多
Handler是Android提供的消息处理类,可用于异步消息的处理,Handler关联了两个队列,一个是消息队列,里面顺序的存放消息对象(Message对象),另一个是存放实现了Runnabler接口对象的队列,系统会根据顺序,取出消息或者Runnable接口对象执行,默认的,Handler对象并没有单独开启一个新的线程,而是和主线程相关的,两个消息队列也是和主线程相关的,如果要单独开启线程,需要借助Looper对象。
下面是一个利用Handler更新进度条的简单应用,里面用到了发送消息与发送实现Runnable接口对象
截图:

代码:
package com.zhou.activity;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;

public class HandlerActivity extends Activity {
    ProgressBar progressBar;
    Button start;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        progressBar=(ProgressBar) this.findViewById(R.id.progressBar);
        start=(Button) this.findViewById(R.id.start);
        start.setOnClickListener(new StartClick());
    }
    Handler handler = new Handler(){
    	@Override
	    public void handleMessage(Message msg) {
	    	super.handleMessage(msg);
	    	progressBar.setProgress(msg.arg1);
	    	handler.postDelayed(updateProgress,1000);
    }};
    class StartClick implements View.OnClickListener {
		@Override
		public void onClick(View v) {
			progressBar.setVisibility(View.VISIBLE);
			handler.post(updateProgress);
		}
    }
    
    Runnable updateProgress = new Runnable() {
		int i=0;
		@Override
		public void run() {
			i+=10;
			Message msg = handler.obtainMessage();
			msg.arg1=i;
			handler.sendMessage(msg);
			if(i==100){
				handler.removeCallbacks(updateProgress);
			}
		}
	};
    
}
  • 大小: 8.7 KB
0
0
分享到:
评论

相关推荐

    通过Handler进行传递值更新进度条

    这个文件可能包含了一个关于进度条更新的示例截图,可以帮助你更好地理解实际效果。在Android Studio中,你可以使用开发者选项中的“显示布局边界”功能来查看布局元素的位置,确保进度条正确显示。 5. **...

    android 很简单的进度条显示的demo

    本Demo展示了如何在Android应用中简单地实现一个进度条显示功能,利用了线程(Thread)和Handler来更新界面。以下是这个示例的具体解析和相关知识点。 1. **进度条组件** Android提供了多种类型的进度条,包括`...

    Android handler的三个小例子(最简单的,进度条,随机变换TextView字体颜色)

    本篇文章将详细解析标题和描述中提到的三个`Handler`小例子:最简单的示例、进度条更新以及随机变换`TextView`字体颜色。 ### 1. 最简单的`Handler`示例 在Android应用中,`Handler`通常配合`Looper`和`Message`...

    android进度条使用实例

    如果在后台线程中更新进度,需要使用`runOnUiThread()`或`Handler`确保操作在主线程中执行。 通过以上步骤,你应该能够熟练地在Android应用中使用进度条来增强用户体验。在ProgressBarDemo项目中,你可以找到更具体...

    Android 自定义通知栏 更新通知栏进度条

    本文将深入探讨如何实现一个自定义的通知栏,以动态更新进度条来模拟下载过程。虽然这里并不涉及实际的下载逻辑,但我们会讨论如何创建一个能够展示进度的自定义通知。 首先,我们需要理解Android的通知系统。在...

    Android 绘制游戏主菜单与进度条加载进度

    如果你需要更定制化的进度条,可以使用自定义View,通过动画效果来模拟进度的增加。例如,你可以使用ObjectAnimator或ValueAnimator来平滑地改变进度条的宽度或高度。 为了实现这些功能,你需要熟悉Android的UI组件...

    Android进度条实例

    本文将深入讲解如何在Android中使用进度条,包括基本使用方法、自定义样式以及异步更新进度。 首先,Android提供了两种类型的进度条:水平进度条(Horizontal ProgressBar)和旋转进度条(Circular ProgressBar),...

    Android水波进度条

    同时,为了实现动态效果,我们需要在`onDraw()`中加入定时器(如Handler或Timer),每隔一定时间更新绘制状态,从而让水波纹持续波动。 在Android项目中,我们还需要处理触摸事件,使得用户可以通过手势来控制水波...

    android下载进度条demo

    接下来,是**进度条更新**。在下载过程中,我们需要实时获取下载进度,并更新UI上的进度条。这通常通过BroadcastReceiver实现,注册一个接收器监听DownloadManager发出的广播,当接收到下载进度变化时,更新进度条的...

    android进度条

    另外,如果你想要实现不定期进度条,即无法预知操作具体需要多长时间,可以使用`AsyncTask`或`Handler`来更新进度条。`AsyncTask`适合在UI线程之外执行耗时操作,`Handler`则用于在不同线程间发送消息和更新UI。 ...

    android Handler

    以下是一个使用 Handler 更新进度条的简单示例: 1. 在布局文件(如 main.xml)中,你需要定义一个 ProgressBar 和两个 Button,分别用于开始和结束进度更新。 ```xml ... <Button android:id="@+id/start" ......

    Android 带有进度条的button-IT计算机-毕业设计.zip

    Android提供了Handler、runOnUiThread()以及View.post()等方法来协调主线程与子线程间的通信。在本项目中,onProgressUpdate()方法的调用会触发UI更新,确保进度条的平滑显示。 最后,考虑到这是一个毕业设计项目,...

    Android实现带有进度条的按钮效果

    当按钮被点击时,我们启动一个线程来模拟下载或上传的过程,并使用 Handler 来更新 ProgressBar 的进度。 小结 本文通过一个实例详细介绍了 Android 实现带有进度条的按钮效果的方法,包括布局文件和 Java 代码的...

    Android——进度条的演示

    对于高级用法,例如实现进度条与异步任务的结合,可以使用`AsyncTask`或`Thread`配合Handler更新UI。`AsyncTask`是一个轻量级的后台执行框架,它允许你在后台线程执行耗时操作,并在UI线程更新进度。下面是一个简单...

    SeekBar进度条的模拟

    在这个特定的项目"SeekBar进度条的模拟"中,我们将探讨如何在主线程中调用任务类来执行后台操作,并实时更新SeekBar的进度,同时实现特定的进度跳转效果,即先从0%逐步增加到90%,然后在3秒内迅速跳至100%。...

    android 进度条

    1. **开始**:在开始任务时,可以通过`setProgress()`方法更新进度,并通过Handler或AsyncTask定期更新进度条。 2. **停止**:当任务完成或用户取消任务时,可以将进度条设置为其最大值,表示任务已完成。 3. **暂停...

    andriod 下载圆圈进度条源代码

    5. **属性动画**:Android的属性动画系统允许我们在不改变View实际属性的情况下,模拟属性的变化,这对于进度条的动画效果非常有用。 6. **线程同步**:由于UI操作必须在主线程进行,所以需要确保进度更新是在合适...

    kotlin实现的进度条

    `Handler`和`postDelayed`用来在主线程中每隔100毫秒更新进度条,以达到平滑动画效果。 此外,Kotlin还支持一些高级特性,比如扩展函数,可以让我们更优雅地处理进度条。例如,我们可以为ProgressBar添加一个自定义...

    Android自定义控件实现圆形进度条

    当点击“开始下载”按钮时,可以通过调用`setProgress()`方法更新进度值,并在`ProgressView`中添加一个`Handler`来模拟进度的逐渐增加。此外,还可以利用`ObjectAnimator`或`ValueAnimator`实现平滑的进度条动画...

Global site tag (gtag.js) - Google Analytics