在Android中从动作事件获取所有的x和y坐标

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;

        }
    });

任何建议或评论都会受到欢迎。谢谢。

你解决了这个问题吗?我卡在这里了,需要帮助。 - Mubashir Murtaza
2个回答

3

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

如果您移动得比屏幕采样快,报告的数据中将有间隙。唯一能做的就是通过在两个触摸点之间的直线上进行插值来生成缺失的点。


1
我正在研究SurfaceView...显然它是用于快速绘制的。这会解决我的问题吗? - user818502

1

被接受的答案并不完全正确,可以使用以下方法从graps访问触摸数据:

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

当存在多个指针时,还有其他相关方法可用(请参见文档)。

一个很好的实践例子可以在这里找到这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接