1

複数の ImageView があり、複数の画像間で指をドラッグすると、それぞれに対して 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;
            }

私は完全に間違った木を吠えていますか?

助けてくれてありがとう。

4

2 に答える 2

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;
    }
于 2011-03-07T17:46:28.833 に答える
0

はい、同じ問題がありました。答えは、ImageViews を埋め込むレイアウトのタッチ リスナーを作成し、X、Y 位置を計算して、どのビューの上にいるのかを知ることでした。 OnTouchListener は、接続されているビューに対してのみ呼び出されます。私が知る限り、ImageView に対して呼び出された場合、その ImageView へのモーションを開始するまで起動しません。

于 2011-03-20T12:47:50.373 に答える