//触摸显示悬浮的按钮
@Override
public boolean onTouch(View v, MotionEvent event) {
if(!zoomControls.isShown()) {
//用一个定时器定时
final Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch(msg.what) {
case 1:
if(zoomControls.isShown()) {
showView(false);
if(timer != null) {
//取消Timer
timer.cancel();
}
}
break;
}
super.handleMessage(msg);
}
};
};
showView(true);
//以后每3秒,执行一次task
timer.schedule(task, 3000);
return false;
}
return false;
}
//控制悬浮按钮的显示或消失
public void showView(Boolean boo) {
if(boo) {
zoomControls.show();
}else {
zoomControls.hide();
}
}
其实原理也不难,就是用一个Timer定时器定时,TimerTask中用一个线程判断和管理是否显示,通过
Handler发送显示或隐藏的消息。
于是我的ZoomControls也实现了自动隐藏功能: