暴风雪 发表于 2013-1-30 04:02:50

[Android]简单的Handler样例,通过线程队列和消息队列操作一个ProgressBar

      Handler主要用于异步消息的处理。
      这里点击了按钮之后在run方法中设置message的alg1的值,每次通过sendMessage把message对象压入消息队列。在handleMessage方法中取出消息队列中的message对象,并设置progressBar的值,然后再把线程对象加入线程队列。这个循环一直运行到进度条走到头~~。
 

package com.example.prograssbarhandle;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ProgressBar;public class MainActivity extends Activity {private ProgressBar pb1=null;private Button bt1=null;    @Override    public void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      setContentView(R.layout.activity_main);      bt1=(Button)findViewById(R.id.but);      pb1=(ProgressBar)findViewById(R.id.firstBar);      pb1.setVisibility(View.VISIBLE);      bt1.setOnClickListener(new bt1listener());    }    class bt1listener implements OnClickListener{public void onClick(View arg0) {// TODO Auto-generated method stubhl1.post(run1);}      }      Handler hl1=new Handler()    {@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubpb1.setProgress(msg.arg1);hl1.post(run1);}      };      Runnable run1=new Runnable()    {    int i=0;public void run() {// TODO Auto-generated method stubi+=10;//得到一个消息对象Message msg=hl1.obtainMessage();msg.arg1=i;try{Thread.sleep(1000);}catch(InterruptedException e){e.printStackTrace();}if(i>=100){i=0;pb1.setProgress(i);//bt1.setText("dawda");hl1.removeCallbacks(run1);return;}hl1.sendMessage(msg);}      };         @Override    public boolean onCreateOptionsMenu(Menu menu) {      getMenuInflater().inflate(R.menu.activity_main, menu);      return true;    }} 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"   android:orientation="vertical">    <TextView      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:text="@string/hello_world"      tools:context=".MainActivity" />    <Button         android:id="@+id/but"      android:layout_width="fill_parent"      android:layout_height="wrap_content"      android:text="start"      />    <ProgressBar      android:layout_width="200dp"      android:layout_height="wrap_content"      android:id="@+id/firstBar"      style="?android:attr/progressBarStyleHorizontal"         /></LinearLayout>
页: [1]
查看完整版本: [Android]简单的Handler样例,通过线程队列和消息队列操作一个ProgressBar