我将逐步解决我的问题,以便更容易理解/回答。
第 1 步:根据Android 开发者指南,“与密度无关的像素相当于 160 dpi 屏幕上的一个物理像素”。这意味着在具有 233 dpi 的 Galaxy S 上,1 dp 等于 1.46 个物理像素 (233/160)。
第 2 步:鉴于 Galaxy S 的分辨率为 480x800,这意味着其屏幕高度为 548dp(800 物理像素除以 1.46)。因此,如果我将我创建的 LinearLayout 的高度设置为 274dp,它将恰好占据屏幕的一半。我测试过,它有效。
第 3 步:Galaxy S3 具有 306 dpi,因此该设备 1dp = 1.9125 物理像素 (306/160)。由于它的分辨率为 720x1280,其屏幕高度为 670dp (1280/1.9125)。同样,如果我制作一个大约 335 的 LinearLayout,它将占据屏幕的一半。测试和工作。
问题:如何使用与密度无关的像素制作一个在 Galaxy S 和 Galaxy S3 上占据一半屏幕的 LinearLayout?因为如果我使用 274dp,它只会在 S 上占据一半的屏幕,反之亦然。还是我的计算在任何步骤中都错了?
更新:考虑一下我想出了以下想法:使用“ScreenMetrics”来获取设备的 dpi 和屏幕分辨率。然后让我的应用程序以 DPs 计算屏幕的总大小(这将是分辨率除以(设备的 dpi/160),然后将布局的高度动态设置为其中的一半。很多工作,但是我想这是这样做的方法吗?