我一直在尝试找出 android 如何在同一应用程序的不同屏幕上重新定位 UI 元素。我一直在用 Android 2.2 的音乐播放器做一些测试:(
来源:simplehelp.net)
这是 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 是如何重新定位视图的?
提前致谢。