我有什么:
imageview
。我想检测一下
onTouch
的{{1}}。imageview
因为我的实现需要
onTouch onClick
是linearLayout的子项发生了什么:
Imageview
问题:
linear layout(parent)
{父}保留的onTouch
linearLayout
onTouch
代码:
Imageview
答案 0 :(得分:1)
触摸事件一次只针对一个视图触发,此处代码触摸事件将针对imageview触发,但我们知道将为每个MotionEvent.ACTION_DOWN,MotionEvent.ACTION_UP和MotionEvent.ACTION_MOVE调用touchListener。因此,如果您希望一次只触发一个事件,即MotionEvent.ACTION_DOWN或MotionEvent.ACTION_UP,则以这种方式写入:
@覆盖 public boolean onTouchEvent(MotionEvent ev){
final int action = ev.getAction();
switch (action) {
// MotionEvent class constant signifying a finger-down event
case MotionEvent.ACTION_DOWN: {
//your code
break;
}
// MotionEvent class constant signifying a finger-drag event
case MotionEvent.ACTION_MOVE: {
//your code
break;
}
// MotionEvent class constant signifying a finger-up event
case MotionEvent.ACTION_UP:
//your code
break;
}
return true;
}
答案 1 :(得分:0)
从不同的视图中生成的多个触摸事件没有来自同一个ImageView的所有触摸事件我测试如下
跟踪它所属的viewID
ImageView imageView = (ImageView) findViewById(R.id.imageView);
Log.i("Tag","ImageView ID :"+imageView.getId());
imageView.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
Log.i("Tag","OnTouch View ID :"+v.getId());
return true;
}
});
当你从onTouch返回true时,将会消耗该事件。
这是输出
ImageView ID :2131230721
OnTouch View ID :2131230721
OnTouch View ID :2131230721
OnTouch View ID :2131230721