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);
            }
        }
    };
}


相关文章
|
XML 搜索推荐 Android开发
Android改变进度条控件progressbar的样式(根据源码修改)
本文介绍了如何基于Android源码自定义ProgressBar样式。首先分析了系统源码中ProgressBar样式的定义,发现其依赖一张旋转图片实现动画效果。接着分两步指导开发者实现自定义:1) 模仿源码创建一个旋转动画XML文件(放置在drawable文件夹),修改图片为自定义样式;2) 在UI控件中通过`indeterminateDrawable`属性应用该动画。最终实现简单且个性化的ProgressBar效果,附带效果图展示。
734 2
|
XML Java 开发工具
在Android中使用ProgressBar显示进度
在Android中使用ProgressBar显示进度
1939 2
|
Java API Android开发
19. 【Android教程】进度条 ProgressBar
19. 【Android教程】进度条 ProgressBar
1296 4
|
Android开发
How to change android indeterminate ProgressBar co
How to change android indeterminate ProgressBar co
195 4
|
XML Java Android开发
Android控件之基础控件——进度条类的view——TextView、Checkbox复选控件、RadioButton单选控件、ToggleButton开关、SeekBar拖动条、menu、弹窗
Android控件之基础控件——进度条类的view——TextView、Checkbox复选控件、RadioButton单选控件、ToggleButton开关、SeekBar拖动条、menu、弹窗
1461 1
|
XML Java Android开发
Android实现自定义进度条(源码+解析)
Android实现自定义进度条(源码+解析)
389 1
|
XML API Android开发
Android 自定义View 之 饼状进度条
Android 自定义View 之 饼状进度条
265 1
|
XML API Android开发
Android 自定义View 之 圆环进度条
Android 自定义View 之 圆环进度条
510 0
|
Android开发 UED
[Android]ProgressBar进度条
[Android]ProgressBar进度条
248 0
|
XML Java Android开发
Android Studio App开发中异步任务AsynTask与异步服务IntentService的讲解与实战(实现四大名著的加载进度条 附源码)
Android Studio App开发中异步任务AsynTask与异步服务IntentService的讲解与实战(实现四大名著的加载进度条 附源码)
639 0

热门文章

最新文章