我正在使用触摸监听器来显示和隐藏一些音量控件,在ACTION_DOWN上显示控件并在ACTION_UP上隐藏它们。我希望能够在不抬起手指的情况下触摸控件,我尝试使用ACTION_MOVE动作,并且无法使其正常工作,因为事件从未触发。我想过拖曳事件,但我不确定这是否适合。我会在这种情况下使用什么样的动作事件?
public boolean onTouch(View v, MotionEvent e)
{
if(v == audioControls)
{
if(e.getAction() == MotionEvent.ACTION_DOWN)
showVolumeControls();
else if(e.getAction() == MotionEvent.ACTION_UP)
hideVolumeControls();
}
else if(e.getAction() == MotionEvent.ACTION_MOVE)
{
if(v == mute)
//Do stuff with this volume control
}
return true;
}
@Demand答案,阅读我的评论 - 这里是代码:
public boolean onTouch(View v, MotionEvent e)
{
if(v == mute && e.getAction() == MotionEvent.ACTION_MOVE)
{
Toast.makeText(getApplicationContext(), "Muted.", Toast.LENGTH_SHORT).show();
hideVolumeControls();
return true;
}
else
return false;
}
你能举个例子吗?我在单个视图中用我的action_move试了一下,并尝试在屏幕上随意拖动(而不是抬起),然后在视图上移动以查看它是否触发了事件,但事实并非如此。我把代码放在我的编辑 – joe 2015-01-21 10:09:20
@joe我更新了我的答案。 – 2015-01-23 11:19:47