【问题标题】:Comparing MotionEvent.getX() with screen width in Android将 MotionEvent.getX() 与 Android 中的屏幕宽度进行比较
【发布时间】:2016-01-29 10:09:35
【问题描述】:

我为活动中的运动事件创建了一个OnTouchListener,我想找到它们相对于屏幕发生的位置。

我可以使用event.getRawX() 来查找x 坐标,同样可以使用windowManager.getDefaultDisplay().getMetrics(new DisplayMetrics())...getSize(new Point()) 来获取显示尺寸。

我遇到的问题是显示尺寸始终将宽度报告为 1080,但我收到的运动事件为 getRawX() 返回大于 1800 的数字。

使用已弃用的 display.getWidth() 会返回接近 1700 的值 - 但即使这也低于屏幕右边缘报告的值。

我假设运动事件使用与显示指标不同的坐标系 - 但如何在两者之间进行转换?

干杯

网卡

【问题讨论】:

  • 您的意思是“...我收到大于 1080 的返回数字...”?

标签: android ontouchlistener motionevent ontouch display


【解决方案1】:

所以,我有一个答案。这是我自己的愚蠢。

我忘了提到的是我正在以横向模式查看屏幕。使用v.getWidth(),而不是显示尺寸,返回1920,这更有意义。

显然(事后看来)视图宽度考虑了显示宽度没有考虑的方向 - 所以我一直在阅读纵向宽度(1080)而不是横向宽度/纵向高度(1920)。

天知道display.getWidth()返回了什么...

感谢所有阅读和思考此内容的人,感谢 Mihriban 重新格式化它。

【讨论】:

    猜你喜欢
    • 2021-03-03
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 2018-05-30
    • 2017-06-06
    • 2023-04-10
    • 2016-12-05
    • 1970-01-01
    相关资源
    最近更新 更多