繁体   English   中英

从android中的运动事件获取所有x和y坐标

[英]Getting All x and y coordinates from a motion event in android

我目前正在开发我自己的基本绘图应用程序。 到目前为止,我的应用程序运行良好,但我注意到我的运动事件似乎没有获得所有被触摸的 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;

        }
    });

任何建议或意见表示赞赏。 谢谢

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

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

接受的答案并非严格正确,可以使用以下方法从 Graps 访问触摸数据:

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

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

可以在此处找到有关如何在实践中使用它的一个很好的示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM