Android学习笔记——ProgressBarHandler

该工程的功能是实现点击按钮进度条按10%递增,使用的方式是Handler

 

以下的代码是MainActivity.java中的代码

package com.example.progressbarhandler;



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 MainActivity extends Activity {

    //申明变量

    ProgressBar bar = null;

    Button startButton = null;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        //根据空间的ID得到代表控件的对象,并未按钮去设置监听器

        bar = (ProgressBar)findViewById(R.id.bar);

        startButton = (Button)findViewById(R.id.startButton);

        startButton.setOnClickListener(new ButtonListener());

    }

    

    class ButtonListener implements OnClickListener{



        @Override

        public void onClick(View v) {

            // TODO Auto-generated method stub

            bar.setVisibility(View.VISIBLE);

            updateBarHandler.post(updateThread);

        }

    }

    //使用匿名内部类来复写Handler当中的handMessage方法

    Handler updateBarHandler = new Handler(){

        public void handleMessage(Message msg){

            bar.setProgress(msg.arg1);

            //线程队列

            updateBarHandler.post(updateThread);

        }    

    };

    //线程类,该类使用匿名内部类的方式进行声明

    Runnable updateThread = new Runnable(){

        int i = 0;

        public void run(){

            System.out.println("Begin Thread");

            i = i + 10;

            //得到一个消息对象,message类是由android操作系统提供

            Message msg = updateBarHandler.obtainMessage();

            //将msg对象的arg1参数的值设置为i,用arg1和arg2这两个成员传递消息

            msg.arg1 = i;

            try{

                //设置当前显示睡眠1秒

                Thread.sleep(1000);

            }

            catch (InterruptedException e){

                e.printStackTrace();

            }

            //将msg对象加入到消息队列当中

            updateBarHandler.sendMessage(msg);

            if(i == 100){

                //如果当i的值为100时,就将线程对象从handle当中移除

                updateBarHandler.removeCallbacks(updateThread);

            }

        }

    };

}

 

以下的代码是activity_main.xml中的代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/LinearLayout1"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    tools:context="${relativePackage}.${activityClass}" >



    <ProgressBar

        android:id="@+id/bar"

        style="?android:attr/progressBarStyleHorizontal"

        android:layout_width="200dp"

        android:layout_height="wrap_content"

        android:visibility="gone"

        />



    <Button

        android:id="@+id/startButton"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="start"

        />

</LinearLayout>

 

你可能感兴趣的:(ProgressBar)