1

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

draw当触摸事件发生在屏幕的特定位置时,我想执行一些更改。问题是,不同屏幕尺寸的值不同。例如,WVGA设备上某个点的X值是60平板电脑上是100。由于这不一致,我无法编写适当的条件。if

请问有人可以根据您以前的经验提出解决方案吗?

4

3 回答 3

1

您可以将要接收触摸事件的基本屏幕尺寸设置为 800 x 600。然后您可以获得设备的实际分辨率,并以此来缩放您的基本数量。即 X 大小将是(800/ 设备宽度),然后您将设备屏幕触摸坐标乘以该比例因子以获得“翻译”版本。

于 2012-07-05T15:24:53.880 回答
1

您可以获得任何设备的分辨率。您可以执行诸如获取屏幕的 getWidth() 和 getHeigth() 之类的操作。然后您可以设置宽度/2 和高度/2 的逻辑 -> 为您提供屏幕的左上部分。做这样的事情。

于 2012-07-05T15:36:08.610 回答
0

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

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

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

希望它对某人有帮助:)

编辑 :

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

于 2012-07-06T14:38:05.213 回答