不同屏幕尺寸上onTouch event.getX或Y的一致性-Android
我正在自定义视图上实现一个不同屏幕尺寸上onTouch event.getX或Y的一致性-Android,android,android-layout,android-view,android-event,android-screen-support,Android,Android Layout,Android View,Android Event,Android Screen Support,我正在自定义视图上实现一个OnTouchListener。在这个视图中,我画了一个基本上沿x轴和y轴移动的对象,我从event.getX()中得到它和事件.getY()分别为 当触摸事件发生在屏幕中的特定位置时,我想执行一些绘制更改。问题是,不同屏幕大小的值不同。例如,WVGA设备上的X值为60,平板电脑上的值为100。由于这是不一致的,我无法编写一个适当的if条件 根据您以前的经验,有人能为您提供解决方案吗?您可以设置希望在ie 800 x 600上接收触摸事件的基本屏幕大小。然后你可以得到设
OnTouchListener
。在这个视图中,我画了一个基本上沿x轴和y轴移动的对象,我从event.getX()中得到它代码>和事件.getY()代码>分别为
当触摸事件发生在屏幕中的特定位置时,我想执行一些绘制更改。问题是,不同屏幕大小的值不同。例如,WVGA设备上的X值为60,平板电脑上的值为100。由于这是不一致的,我无法编写一个适当的if
条件
根据您以前的经验,有人能为您提供解决方案吗?您可以设置希望在ie 800 x 600上接收触摸事件的基本屏幕大小。然后你可以得到设备的实际分辨率,并以此来调整你的基本数量。即X尺寸为(800/设备宽度),然后将设备屏幕触摸坐标乘以此比例因子,得到“翻译”版本。您可以得到任何设备的分辨率。您可以执行一些操作,例如获取屏幕的getWidth()和getHeigth()。然后您可以设置宽度/2和高度/2的逻辑->显示屏幕的左上部分。像这样做。我基本上对这两个答案都有好的想法,(恕我直言),但对我有效的解决方案如下。这个想法来自Chintan Raghwani的线索
因此,假设设备屏幕上的位置x
值等于总视图
宽度乘以百分比
示例:posX=getMeasuredWidth()*0.5
将为您提供在中心处理的触摸事件。通过这种方式定位对象将使其在所有设备中保持一致
希望它能帮助一些人:)
编辑:
很幸运找到了这个帖子。这就是上面的过程,也被称为黄金比率,这是一篇关于这方面的好文章 谢谢你的快速回复。请不要介意我的清白。我不能正确地得到算法。请帮忙。我的视图位于视图的fill_parent中,因此screenWidth=getMeasuredWidth()。我对你提到的比例因子感到困惑。提前感谢。假设您在300x200的屏幕上开发了应用程序。您希望检测用户何时触摸屏幕左侧。因此,如果(touch.x<150){//do something}那么如果将其安装在屏幕大小为600x200的设备上,那么如果(x<150)仅在触摸屏幕最左侧时才起作用,而不是从中间点。因此,您需要做的是缩放touch.x值。因此,您的设备上有X(300),新设备上有X(600)。300 / 600 = 0.5... 因此,您收到的任何触摸事件坐标都需要将它们乘以0.5,以获得它们相对于if语句参数的值。该链接不起作用。请共享正确的链接