程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Activity中Handler的使用

Activity中Handler的使用

編輯:C++入門知識

用Handler更新一個TextView的背景顏色在5種顏色中循環變換

Handle特點:

1,傳遞Message。用於接收子線程發送的數據,並用此數據配合主線程更新UI。

2,傳遞Runable對象。用於通過Handler綁定的消息隊列,安排不同操作的執行順序。

第一種實現方法:

import java.util.Random;

import com.example.handle.R.color;

import android.R.integer;
import android.app.Activity;
import android.content.res.Resources.Theme;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;

public class MainActivity extends Activity {
	TextView tv;
	int color[];
	Handler myHandler;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tv=(TextView)findViewById(R.id.tv);
		color=new int[]{
				R.color.black,
				R.color.blue,
				R.color.red,
				R.color.yellow,
				R.color.green
		};//背景顏色數組
		myHandler=new Handler();
		myHandler.post(rb);
	}
	Runnable rb=new Runnable(){
		public void run(){
			Random rd=new Random();//產生隨機數
			int i=rd.nextInt(5);
			tv.setBackgroundColor(getResources().getColor(color[i]));
			myHandler.postDelayed(rb,1000);//設置延遲時間
		}
	};
}

第二種實現方法:

import android.app.Activity;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

public class SecondActivity extends Activity {

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_second);
		new updateColor().start();
	}
	Handler handler=new Handler(){
		public void handleMessage(Message msg){
			Resources res = getResources();
			Drawable drawable = res.getDrawable(R.color.black);
			Drawable drawable1 = res.getDrawable(R.color.aqua);
			Drawable drawable2 = res.getDrawable(R.color.green);
			Drawable drawable3 = res.getDrawable(R.color.red);
			Drawable drawable4 = res.getDrawable(R.color.pink);
			Bundle b=msg.getData();
			int key=b.getInt("key");
			switch(key){
			case 0: SecondActivity.this.getWindow().setBackgroundDrawable(drawable) ;
			break;
			case 1:SecondActivity.this.getWindow().setBackgroundDrawable(drawable1);
			break;
			case 2:SecondActivity.this.getWindow().setBackgroundDrawable(drawable2);
			break;
			case 3:SecondActivity.this.getWindow().setBackgroundDrawable(drawable3);
			break;
			case 4:SecondActivity.this.getWindow().setBackgroundDrawable(drawable4);
			break;
			}
		}
	};
	class updateColor extends Thread{
		int i=0;
		public void run() {
			while(true){
				Message msg=handler.obtainMessage();
				Bundle bundle=new Bundle();
				if(i<5){
					try {
						bundle.putInt("key", i);
						msg.setData(bundle);
						i=i+1;
						handler.sendMessage(msg);
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}else{
					i=i%5;
				}
			}
		}
	}
}

效果:

\\

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved