0

ユーザーがイメージビュー内でのみ触れている座標を見つけようとしています。

これまでのところ、次のコードでこれを行うことができました。

    img = (ImageView) findViewById(R.id.image);
    img.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            x = (int) event.getX();
            y = (int) event.getY();
            int[] viewCoords = new int[2];
            img.getLocationOnScreen(viewCoords);
            int imageX = (int) (x - viewCoords[0]); // viewCoods[0] is the X coordinate
            int imageY = (int) (y - viewCoords[1]); // viewCoods[1] is the y coordinate
            text.setText("x:" +x +"y"+y);

            return false;
        }
    });

ただし、これは onTouchListener であり、各タッチの後にのみ座標を見つけることを意味します。私がやりたいことは、ユーザーがイメージビューで指を動かしている間、常に座標を見つけるように作成することです。このコードで画面全体でこれを達成しました:

@Override
public boolean onTouchEvent(MotionEvent event) {
    x = (float)event.getX();
    y = (float)event.getY();
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
        case MotionEvent.ACTION_MOVE:
        case MotionEvent.ACTION_UP:
    }



    text.setText("x:"+ x +" y:" +y);

return false;
}

ただし、このコードをイメージビュー内でのみ機能させる方法がわかりません。

ここに画像の説明を入力

4

1 に答える 1

2

あなたの問題は、あなたreturn falseが onTouch イベントの最後にいることです。

の場合return false、この特定のジェスチャに関連するイベントに関心がないことを OS に伝えているため、今後のアクティビティ (ACTION_MOVE や ACTION_UP など) のビューへの通知を停止します。

に戻るtrueonTouchEvent、指が画面に触れている間は一連のイベントを受信し続け、離すと最終イベントを受信します。

于 2012-08-09T22:44:29.307 に答える