6

私はAndroidを初めて使用しますが、画面上の連続タッチの座標を取得する方法を見つけるためにしばらく努力してきました。たとえば、指が動き回るとリアルタイムで更新される2つの変数(x、y)があります。タッチしたときに見つける方法はわかりましたが、実際にはわかりません。その後、指が動いているときに結果を返す方法はわかりません。

ACTION_MOVEとは異なる組み合わせでwhile/forループを実行しながら、switchステートメントを試してきました。/UP/DOWN...まだ何もありません。

ウェブサイトで同じ質問を見つけましたが、答えは最初のステップにのみ適合します(タッチからの調整のみを示しています)これに対する解決策を本当に感謝します!ありがとう!

4

3 に答える 3

12

私が推測しているコードが表示されない場合、基本的trueに、への最初の呼び出しに戻らないonTouchEventと、ジェスチャの後続のイベント(MOVE、UPなど)は表示されません。

多分それはあなたの問題ですか?それ以外の場合は、コードサンプルを作成してください。

于 2012-05-28T23:22:06.760 に答える
10
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final TextView xCoord = (TextView) findViewById(R.id.textView1);
    final TextView yCoord = (TextView) findViewById(R.id.textView2);

    final View touchView = findViewById(R.id.textView3);
    touchView.setOnTouchListener(new View.OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
            final int action = event.getAction();
            switch (action & MotionEvent.ACTION_MASK) {

                case MotionEvent.ACTION_DOWN: {
                    xCoord.setText(String.valueOf((int) event.getX()));
                    yCoord.setText(String.valueOf((int) event.getY()));
                    break;
                }

                case MotionEvent.ACTION_MOVE:{
                    xCoord.setText(String.valueOf((int) event.getX()));
                    yCoord.setText(String.valueOf((int) event.getY()));
                    break;
                }
            }
            return true;

        }

    });
}
于 2012-05-29T12:43:02.803 に答える
0

OnTouchListenerドラッグを認識したいビューに対してを実装する必要があります。

次にOnTouchListener、X座標とY座標を表示する必要があります。MotionEvent.getRawX()私はあなたがそれらを介して得ることができると信じていますMotionEvent.getRawY()

このメソッドを使用してMotionEvent.getAction()、ドラッグがいつ発生しているかを確認できます。定数はMotionEvent.ACTION_MOVEです。ここにいくつかの疑似コードがあります:

OnTouchListenerインターフェースを追加する

public class XYZ extends Activity implements OnTouchListener

onCreateメソッドにリスナーを登録します

public void onCreate(Bundle savedInstanceState)
{
    //other code

    View onTouchView = findViewById(R.id.whatever_id);
    onTouchView.setOnTouchListener(this);
}

onTouchメソッドを実装する

public boolean onTouch(View view, MotionEvent event) 
{
    if(event.getAction() == MotionEvent.ACTION_MOVE)
    {
        float x = event.getRawX();
        float y = event.getRawY();
        //  Code to display x and y go here
        // you can print the x and y coordinate in a textView for exemple
    }
}
于 2012-05-29T00:13:56.013 に答える