Android之利用Handler实现ProgressBar进度条

简介: res/layout/main.xml文件内容如下: package syit.
res/layout/main.xml文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <ProgressBar
        android:id="@+id/pbar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:visibility="gone"
        />
        <Button
            android:id="@+id/btnStart"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/btnText"
            />
</LinearLayout>

package syit.david;

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

public class DemoActivity extends Activity {
    public ProgressBar pBar;
    public Button btnStart;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //查找控件
        pBar = (ProgressBar)findViewById(R.id.pbar);
        btnStart = (Button)findViewById(R.id.btnStart);
        
        //为按钮绑定监听事件
        btnStart.setOnClickListener(new ButtonListener());
    }
    
    class ButtonListener implements OnClickListener
    {
        @Override
        public void onClick(View v)
        {
            pBar.setVisibility(View.VISIBLE);
            updateBarHandler.post(updateThread);
        }
    }
    
    //消息异步机制
    public Handler updateBarHandler = new  Handler()
    {
        @Override
        public void handleMessage(Message msg)
        {
            pBar.setProgress(msg.arg1);
            updateBarHandler.post(updateThread);
        }
    };
    
    
    public Runnable updateThread = new Runnable()
    {
        int i =0;
        @Override
        public void run()
        {
            i+=10;
            Message msg = updateBarHandler.obtainMessage();
            msg.arg1 = i;
            try
            {
                Thread.sleep(1000);
            } catch (Exception e)
            {
                e.printStackTrace();
            }
            //将msg加入到消息队列中
            updateBarHandler.sendMessage(msg);
            if(i==100)
            {
                updateBarHandler.removeCallbacks(updateThread);
                pBar.setVisibility(View.GONE);
            }
        }
    };
}


相关文章
|
消息中间件 网络协议 Java
Android 开发中实现数据传递:广播和Handler
Android 开发中实现数据传递:广播和Handler
164 1
|
5月前
|
XML 搜索推荐 Android开发
Android改变进度条控件progressbar的样式(根据源码修改)
本文介绍了如何基于Android源码自定义ProgressBar样式。首先分析了系统源码中ProgressBar样式的定义,发现其依赖一张旋转图片实现动画效果。接着分两步指导开发者实现自定义:1) 模仿源码创建一个旋转动画XML文件(放置在drawable文件夹),修改图片为自定义样式;2) 在UI控件中通过`indeterminateDrawable`属性应用该动画。最终实现简单且个性化的ProgressBar效果,附带效果图展示。
278 2
|
5月前
|
消息中间件 Android开发
Android Handler的使用方式以及其机制的简单介绍
Handler 是 Android 中实现线程间通信的重要机制,可传递任意两线程数据。常用场景包括子线程向主线程(UI 线程)传递结果,以及主线程向子线程发送消息。其核心涉及四个类:Handler(发送/接收消息)、Message(消息载体)、MessageQueue(消息队列)和 Looper(消息循环泵)。基本流程为:Handler 发送 Message 至 MessageQueue,Looper 从队列中按 FIFO 取出并处理。
163 0
|
12月前
|
消息中间件 存储 Java
Android消息处理机制(Handler+Looper+Message+MessageQueue)
Android消息处理机制(Handler+Looper+Message+MessageQueue)
147 2
|
Android开发
How to change android indeterminate ProgressBar co
How to change android indeterminate ProgressBar co
79 4
|
12月前
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
|
12月前
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
160 1
|
12月前
|
消息中间件 存储 Java
Android消息处理机制(Handler+Looper+Message+MessageQueue)
Android消息处理机制(Handler+Looper+Message+MessageQueue)
395 2
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android 消息处理机制估计都被写烂了,但是依然还是要写一下,因为Android应用程序是通过消息来驱动的,Android某种意义上也可以说成是一个以消息驱动的系统,UI、事件、生命周期都和消息处理机制息息相关,并且消息处理机制在整个Android知识体系中也是尤其重要,在太多的源码分析的文章讲得比较繁琐,很多人对整个消息处理机制依然是懵懵懂懂,这篇文章通过一些问答的模式结合Android主线程(UI线程)的工作原理来讲解,源码注释很全,还有结合流程图,如果你对Android 消息处理机制还不是很理解,我相信只要你静下心来耐心的看,肯定会有不少的收获的。
618 3
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
|
XML Java 开发工具
在Android中使用ProgressBar显示进度
在Android中使用ProgressBar显示进度
1533 2

热门文章

最新文章