先演示一個Demo代碼。功能是每隔一秒實現Textview顏色的變化,而且是循環變化直到停止。
package com.example.handlerpost;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener {
Button mBtok;
Button mBtCancel;
TextView mNumber;
private int mRunCount = 0;
private int TIME = 1000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBtok = (Button) findViewById(R.id.btok);
mBtCancel = (Button) findViewById(R.id.btCancel);
mNumber = (TextView) findViewById(R.id.number);
mBtCancel.setOnClickListener(this);
mBtok.setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
switch (arg0.getId()) {
case R.id.btok:
mHandler.removeCallbacks(mRunnable);
mHandler.postDelayed(mRunnable, 0);
break;
case R.id.btCancel:
closeTimer();
break;
}
}
private void closeTimer() {
mRunCount = 0;
mHandler.removeCallbacks(mRunnable);
mNumber.setTextColor(android.graphics.Color.parseColor("#FF4040"));//最初的顏色
}
Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
default:
break;
}
}
};
Runnable mRunnable = new Runnable() {
@Override
public void run() {
switch (mRunCount) {
case 0:
mNumber.setTextColor(android.graphics.Color.parseColor("#FF4040"));
break;
case 1:
mNumber.setTextColor(android.graphics.Color.parseColor("#FF3E96"));
break;
case 2:
mNumber.setTextColor(android.graphics.Color.parseColor("#FF1493"));
break;
case 3:
mNumber.setTextColor(android.graphics.Color.parseColor("#FF00FF"));
break;
case 4:
mNumber.setTextColor(android.graphics.Color.parseColor("#FF0000"));
break;
case 5:
mNumber.setTextColor(android.graphics.Color.parseColor("#C1C1C1"));
break;
case 6:
mNumber.setTextColor(android.graphics.Color.parseColor("#C0FF3E"));
break;
case 7:
mNumber.setTextColor(android.graphics.Color.parseColor("#BF3EFF"));
break;
case 8:
mNumber.setTextColor(android.graphics.Color.parseColor("#BC8F8F"));
break;
case 9:
mNumber.setTextColor(android.graphics.Color.parseColor("#9AFF9A"));
break;
case 10:
mNumber.setTextColor(android.graphics.Color.parseColor("#0000EE"));
mRunCount = -1;
break;
}
mRunCount++;
// handler的postDelayed方法實現定時器
try {
mHandler.postDelayed(this, TIME);
} catch (Exception e) {
e.printStackTrace();
mRunCount = 0;
}
}
};
}
1,首先創建一個Handler對象 Handler mHandler=new Handler(); 2,然後創建一個Runnable對象
Runnable mRunnable=new Runnable(){
@Override
public void run() {
//要做的事情,這裏再次調用此Runnable對象,以實現每秒實現一次的定時器操作
mHandler.postDelayed(this, 1000);
}
};
3,mHandler.postDelayed(runnable, 1000);使用PostDelayed方法,1秒後調用此Runnable對象