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

这正是硬件的设计方式。硬件每秒对触摸屏进行 N 次采样,并在每次感应到手指时吐出坐标。

如果您的移动速度比屏幕样本快,那么报告的数据中就会出现空白。您唯一能做的就是通过沿两次触摸之间的线插值自己生成缺失点。

于 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 回答