0

我一直在尝试找出 android 如何在同一应用程序的不同屏幕上重新定位 UI 元素。我一直在用 Android 2.2 的音乐播放器做一些测试:( 来源:simplehelp.net安卓2.2音乐播放器

这是 MediaPlaybackActivity 的第一个图像按钮在不同屏幕尺寸下的位置(左上角): 屏幕 1(分辨率:480x800,密度:240dpi):像素坐标:345、109 屏幕 2(分辨率:240x400,密度: 120dpi): 像素坐标: 173, 53 屏幕 3 (分辨率: 320x480, 密度: 160dpi): 像素坐标: 230, 46

我的问题是:给定任何屏幕中的 UI 元素(在本例中为按钮)的坐标,是否可以预测该元素在其他两个屏幕上的坐标?我尝试从 px 转换为 dp 然后再转换回 px 但它不起作用(虽然很接近),这是我尝试过的:

屏幕 2 中索引为 0 的图像按钮的位置 px:173、53 屏幕 2 中索引为 0 的图像按钮的位置 dp:230.66、70.66 ()(我使用这个公式:px = dp * (dpi / 160) 其中我在这里找到)在屏幕 1 中索引为 0 的图像按钮的位置(以像素为单位):346、106

您可以看到这里非常接近,但是当使用相同的公式将 px 从屏幕 1 转换为屏幕 3 时,我得到:230, 72.66,因此您可以看到y轴上的差异非常大。我想上条会影响y轴,但我不明白为什么会有这样的差异。

我在这里做错了吗?有没有办法预测 UI 元素的新位置和大小?Android 是如何重新定位视图的?

提前致谢。

4

1 回答 1

0

我想我知道为什么计算失败了。我创建了一个简单的应用程序,让 android 自己进行缩放,然后应用公式并且它起作用了。所以我猜我正在使用的应用程序(音乐播放器)可能会被定制为在不同的屏幕上以不同的方式显示,即使它看起来完全一样。而且由于开发人员可以为不同的屏幕使用不同的布局,所以我想问题并不像我想象的那么简单。谢谢@aprian,您的评论帮助我找出可能是什么问题。

于 2012-09-05T03:23:27.450 回答