如何使Android应用程序适配不同的屏幕分辨率?

3
我们如何调整我们的应用程序以适应不同 Android 设备上不同的屏幕大小?

似曾相识!? 这里曾经有一个类似的问题: http://stackoverflow.com/questions/1946480/accoding-to-emulator-resolution-how-to-change-the-activityscreen-controls-size 在提问之前,请确保您进行了搜索。 - Samuh
3个回答

4
如果您希望您的布局在不同分辨率的屏幕上都能够正常显示,您应该使用 dip 作为单位进行尺寸调整。例如:
android:layout_marginRight="10dip"

"

dip代表设备无关像素,使用它们在布局中意味着Android会根据运行应用程序的设备显示自动缩放您的布局。

您可以在Android开发者文档中的支持多个屏幕页面中了解这些内容。此文档还有其他处理不同显示的选项,但我认为使用dip可能是最简单的方法。

"

1

是的,正如Dave所回答的那样,使用“dip”是最好的选择。

此外,一些屏幕的高度/宽度比不同,因此仅使用“dip”将不足以满足需求。 然后你有两个选择。如果你总是使用像LinearLayout、RelativeLayout等布局,并使用“fill parent”,那么你就没问题了,因为屏幕会自动适应。 但有时你需要在某些东西上设置固定高度,如果你在droid(例如)上部署它,它看起来会很短,因为droid的高度/宽度比G1/G2等更高 在这种情况下,您需要使用代码设置高度。


当你说“你需要使用代码设置高度”时,你确切地是什么意思?我问这个问题是因为这是我的主要问题。我已经为所有内容使用了DIP,但在比Droid(hdpi,854x480,长)更小的屏幕上,底部都会被裁剪掉。 - joepetrakovich

0
使用以下代码在logcat中检查屏幕分辨率:

DisplayMetrics displaymetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);

        height = displaymetrics.heightPixels;
        width = displaymetrics.widthPixels;

如果屏幕尺寸显示为480x569,那么只有屏幕的末端可能会被截断。要解决此问题,您需要在清单文件中更改minSDK版本号。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接