我有几个ImageViews,当我将手指拖过多个图像时,我希望为每个ImageViews触发onTouch事件。目前,onTouch事件仅在第一个ImageView上触发(或实际上在多个ImageView上触发,但仅在多屏触摸屏幕时)。伪代码:
for(int i=0;i<5;i++){
ImageView img=new ImageView(this);
LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(width,height);
img.setImageResource(R.drawable.cell);
img.setOnTouchListener(this);
mainLayout.addView(img,layoutParams);
}
...
public boolean onTouch (View v, MotionEvent event){
Log.d("MY_APP","View: " + v.getId());
return false;
}
我是否完全吠叫了错误的树?
感谢您的帮助。
答案 0 :(得分:1)
我认为您需要使用移动事件而不是触摸事件,并将getX和getY与您的观看位置进行比较。
@Override
public boolean onTouchEvent(MotionEvent ev) {
final int action = ev.getAction();
switch (action) {
// MotionEvent class constant signifying a finger-down event
case MotionEvent.ACTION_DOWN: {
break;
}
// MotionEvent class constant signifying a finger-drag event
case MotionEvent.ACTION_MOVE: {
X = ev.getX();
Y = ev.getY();
//compare here using a loop of your views
break;
}
// MotionEvent class constant signifying a finger-up event
case MotionEvent.ACTION_UP:
break;
}
return true;
}
答案 1 :(得分:0)
是的,我遇到了同样的问题。答案是为布局创建一个触摸监听器,我将我的ImageViews嵌入其中,然后计算X,Y位置,以便知道我的哪个视图。 仅为其连接的视图调用OnTouchListener。我的意思是,如果它被调用ImageView,它就不会触发,直到你将动画开始到ImageView上,据我所知。