TestBarHandler

来源:互联网 发布:同学聚会相册制作软件 编辑:程序博客网 时间:2024/06/05 16:32
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 TestBarHandler extends Activity {    ProgressBar bar = null;Button startButton = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);bar = (ProgressBar)findViewById(R.id.bar);startButton = (Button)findViewById(R.id.startButton);startButton.setOnClickListener(new ButtonListener());}class ButtonListener implements OnClickListener{@Overridepublic void onClick(View v) {bar.setVisibility(View.VISIBLE);updateBarHandler.post(updateThread);}}Handler updateBarHandler = new Handler(){public void handleMessage(Message msg){bar.setProgress(msg.arg1);updateBarHandler.post(updateThread);}};Runnable updateThread = new Runnable(){int i = 0;@Overridepublic void run() {System.out.println("Begin Thread");i = i + 10;Message msg = updateBarHandler.obtainMessage();msg.arg1 = i;try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}updateBarHandler.sendMessage(msg);if(i==100){updateBarHandler.removeCallbacks(updateThread);}}};}

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    >    <ProgressBarandroid: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与Handler的结合实例这个程序有两个队列 一个Message消息队列  一个线程消息队列其实每个队列当中只有两个值,一个是当前正在执行的消息,一个是由当前正在执行的引发或导引出的第二个消息队列Handler的方法当中有handleMessage(Message msg)  和 sendMessage(Message msg)这两个方法配套使用的,用于在消息队列中添加消息当然用到了 post(Runnable r) 和 removeCallbacks(Runnable r) 这两个方法还有Button的setOnClickListener()public void setOnClickListener(View.OnClickListener l)还有就是Progress 的setVisibility(View.VISIBLE);使其出现

原创粉丝点击