如何在安卓系统中区分480*800和480*854屏幕分辨率的布局?

4
在一个应用程序中,我需要确保UI组件在所有屏幕分辨率设备上都能放置在正确的位置。我已经阅读了Android开发者网站上的多个屏幕分辨率支持教程。基于此,似乎我需要为小型、普通和大型屏幕设备创建单独的布局文件。现在,问题在于即使在大屏幕上也有不同的分辨率,例如480 * 800和480 * 854。在屏幕上,组件会稍微错位。我将顶部边距设置为100 dip,然后对于480 * 800,它看起来很正常,但对于480 * 854,它会稍微偏移。

请问有人能告诉我现在该如何处理?

2个回答

3

这两种分辨率都被视为布局长,因此您需要手动根据设备的高度和宽度设置布局。

在我看来,这是最好的解决方案。我已经将相同的解决方案应用于我的应用程序中。

示例

        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        height = dm.heightPixels;
        width = dm.widthPixels;

        if (height == 854 || width == 480) 
        {
              // Your view 
        }
        else
        {
              // Your VIew
        }

您需要在activity的onCreate()方法中检查上述条件。

嗨,即使过去了6年,这仍然是最好的解决方案吗?我遇到了同样的问题,所以想问一下。 - Stelios Papamichail

-1

通过使用:

res/drawable-hdpi-long/ res/drawable-hdpi-notlong/

应该可以区分 WVGA854 和 WVGA800。

但我强烈建议您设计布局,使其足够强大,可以在这两个屏幕上使用一组布局。如果您不能在这种情况下设计一个布局,则维护/测试工作将会太多。


谢谢您的回复。但是您所说的适用于图像。我们是否也可以对布局进行相同的操作,例如layout-large-long和layout-large-notlong。 - sunil
抱歉,您可以执行相同的操作,即res/layout-hdpi-long和res/layout-hdpi-notlong。 - softcharles
如果我在res文件夹内创建这些文件夹,会导致编译时出错。你在你的应用程序中使用过这种方式吗? - sunil
啊,抱歉,应该是res/layout-long-hdpi和res/layout-notlong-hdpi。Chirag可能是正确的,也就是说两种布局都被认为是长的。请参阅https://dev59.com/PkrSa4cB1Zd3GeqPZcsM - softcharles

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