4

私は現在、自分の基本的な描画アプリに取り組んでいます。これまでのところ、私のアプリは正常に機能していますが、モーションイベントがタッチされたすべてのX軸とY軸のポイントを取得していないように見えることに気付きました。

画面上で指を動かすと、円の間に目立つスペースがあります。指をゆっくり動かすと、すべてのポイントがキャプチャされます。すべてのポイントを取得する方法はありますか、それともすべてのポイントを処理できるように最適化する方法はありますか?

これが私がそれをしている方法です:

setOnTouchListener(new View.OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {

                int x; 
            int y;    

            switch (event.getAction())
            {
                case MotionEvent.ACTION_DOWN:
                {
                    x = (int) event.getX();
                    y = (int) event.getY();   
                    //method draws circle at x and y coordinate
                    MyPainter mp = new MyPainter(x,y);

                    break;
                }
                case MotionEvent.ACTION_MOVE:
                {
                    x = (int) event.getX();
                    y = (int) event.getY();
                MyPainter mp = new MyPainter(x,y);

                    break;
                }
            }
            return true;

        }
    });

提案やコメントをいただければ幸いです。ありがとう

4

2 に答える 2

3

これは、ハードウェアの設計方法です。ハードウェアはタッチスクリーンを1秒間にN回サンプリングし、指を感知するたびに座標を吐き出します。

画面のサンプルよりも速く移動すると、報告されるデータにギャップが生じます。できることは、2つのタッチの間の線に沿って補間することにより、欠落しているポイントを自分で生成することだけです。

于 2012-11-25T03:15:07.407 に答える
1

受け入れられた答えは厳密には正しくありません。次の方法を使用して、グラプからタッチデータにアクセスすることができます。

event.getHistorySize();   // returns the number of data points stored as an int
event.getHistoricalX(int);
event.getHistoricalX(int);

複数のポインターがある場合は、他の関連するメソッドを使用できます(ドキュメントを参照)。

これを実際に使用する方法の良い例は、ここにあります。

于 2013-08-28T14:00:23.317 に答える