Android为多个ImageView触发onTouch事件

时间:2011-03-07 17:06:41

标签: android events imageview ontouchlistener ontouchevent

我有几个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;
            }

我是否完全吠叫了错误的树?

感谢您的帮助。

2 个答案:

答案 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上,据我所知。