onTouch event.getX或Y在不同屏幕尺寸上的一致性 - Android

时间:2012-07-05 15:20:12

标签: android android-layout android-view android-event android-screen-support

我正在自定义视图上实现OnTouchListener。在这个视图中,我正在绘制一个基本沿x轴和y轴移动的对象,我分别得到event.getX();event.getY();形式。

我希望在屏幕中的特定位置发生触摸事件时执行一些draw更改。问题是,对于不同的屏幕尺寸,值是不同的。例如, WVGA 设备上某点的 X 60 平板电脑 > 100 即可。由于这是不一致的,我无法写出正确的if条件。

任何人都可以根据您以前的经验提出解决方案吗?

3 个答案:

答案 0 :(得分:1)

您可以设置您希望接收触摸事件的基本屏幕尺寸,即800 x 600.然后您可以获得设备的实际分辨率,并按此缩放基本数量。即X尺寸将是(800 /设备宽度),然后您按照此比例因子计算设备屏幕触摸坐标以获得“已翻译”版本。

答案 1 :(得分:1)

您可以获得任何设备的分辨率。你可以做一些事情,比如获取屏幕的getWidth()和getHeigth()。然后你可以为width / 2和heigth / 2 - >设置逻辑。为您提供屏幕的左上角部分。做这样的事。

答案 2 :(得分:0)

我基本上都得到了两个答案的好主意,(我的尊重)但是对我有用的解决方案如下。这个想法来自Chintan Raghwani的线索。

因此,假设设备屏幕上的position x值等于总view宽度乘以percentage

示例:posX = getMeasuredWidth() * 0.5将为您提供在中心处理的触摸事件。通过这种方式定位对象将使所有设备保持一致。

希望它有所帮助:)

编辑:

很幸运能找到这篇文章。上面的过程也被称为黄金比例 this真是一个很棒的帖子。