界面长按3s弹出隐藏按钮
在界面里重写onTouchEvent方法,当隐藏按钮不可见时,长按ACTION_DOWN,延时启动隐藏按钮,当检测到其它Action,取消显示隐藏按钮。
@Override
public boolean onTouchEvent(MotionEvent event)
{
if (!Visiable)
{
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
myHandler.sendEmptyMessageDelayed(MSG_SHOW_VIEW, DELAY_TIME_SHOW);
}
else
{
myHandler.removeMessages(MSG_SHOW_VIEW);
}
}
return false;
}
private final Handler myHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
switch (msg.what)
{
case MSG_SHOW_VIEW:
isVisiable = true;
iavAux.setVisibility(View.VISIBLE);
myHandler.removeMessages(MSG_HIDE_ADJUST_VIEW);
//延时消失
myHandler.sendEmptyMessageDelayed(MSG_HIDE_VIEW, DELAY_TIME_SHOW);
break;
case MSG_HIDE_VIEW:
isVisiable = false;
iavAux.setVisibility(View.INVISIBLE);
break;
default:
break;
}
super.handleMessage(msg);
}
};
检测3s内客户无操作
界面重写dispatchTouchEvent方法,在ACTION_UP时,延时隐藏按钮,当ACTION_DOWN时,取消隐藏操作。dispatchTouchEvent的好处是可以检测到子view的down和up,如seekbar的,但是onTouch就不一定能检测到子view的down和up。
@Override
public boolean dispatchTouchEvent(MotionEvent ev)
{
switch (ev.getAction())
{
case MotionEvent.ACTION_DOWN:
myHandler.removeMessages(MSG_HIDE_VIEW);
break;
case MotionEvent.ACTION_UP:
if (isVisiable)
{
myHandler.sendEmptyMessageDelayed(MSG_HIDE_VIEW, DELAY_TIME_HIDE);
}
break;
default:
break;
}
return super.dispatchTouchEvent(ev);
}