Android запускает событие onTouch для нескольких ImageViews - PullRequest
1 голос
/ 07 марта 2011

У меня есть несколько 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 ]

1 голос
/ 07 марта 2011

Я думаю, вам нужно использовать событие перемещения, а не сенсорное событие, и сравнивать 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;
    }
0 голосов
/ 20 марта 2011

Да, у меня была такая же проблема.Ответ состоял в том, чтобы создать сенсорный слушатель для макета, в который я встраиваю свои ImageViews, а затем вычислить позицию X, Y, чтобы узнать, над каким из моего View я. OnTouchListener вызывается только для вида, к которому он подключен.Я имею в виду, что если он вызывается для ImageView, он не сработает, пока вы не начнете движение к этому ImageView, насколько я знаю.

...