精美手电筒间断闪烁实现

手电筒间断闪烁实现
1. 首先看下截图效果
  精美手电筒间断闪烁实现_第1张图片  精美手电筒间断闪烁实现_第2张图片
  可以看到第二个按钮点击后,出现手电筒间断闪烁状况,接下来看如何实现的。
2. 间断闪烁实现
 首先我们肯定会想到用线程控制UI更改,
在onclick()方法中,启动线程。
class listener implements OnClickListener {
		@Override
		public void onClick(View view) {
			switch (view.getId()) {
			......
			case R.id.flash_btn:
				if (!isflag) {
					if (powerled.m_isOn) {
						lightBtn.setBackgroundResource(R.drawable.flash_close);
					}
					Thread thread = new Thread(runnableRef);
					thread.start();
					isflag = true;
				} else {
					powerled.turnOff();
					flashBtn.setBackgroundResource(R.drawable.flash_close);
					pilot_btn.setBackgroundResource(R.drawable.pilot_close);
					handler.removeCallbacks(runnableRef);
					isflag = false;
				}
				break;
			default:
				break;
			}
		}
	}
这里需要开启一个线程操作,如果直接发送handler 消息,会出现异常的。
然后通过线程给Handler发送消息
private Runnable runnableRef = new Runnable() {
	public void run() {
		if (!lightflag) {
				Message message = new Message();
				message.what = 123;
				handler.sendMessage(message);
		} else {
				Message message = new Message();
				message.what = 456;
				handler.sendMessage(message);
		}
		handler.postDelayed(runnableRef, 1000);
	}
};
此时Handler接收消息后,要更换UI,并执行控制闪光灯操作
final Handler handler = new Handler() {
      public void handleMessage(Message msg) {
		switch (msg.what) {
		case 123: //开启手电筒
				powerled.turnOn();
				flashBtn.setBackgroundResource(R.drawable.flash_open);
				pilot_btn.setBackgroundResource(R.drawable.pilot_open);
				lightflag = true;
				break;
		case 456: //关闭手电筒
				powerled.turnOff();
				flashBtn.setBackgroundResource(R.drawable.flash_close);
				pilot_btn.setBackgroundResource(R.drawable.pilot_close);
				lightflag = false;
				break;



你可能感兴趣的:(android,线程,手电筒,间断闪烁)