代码之家  ›  专栏  ›  技术社区  ›  Hamid

Android屏幕分辨率和大小

  •  0
  • Hamid  · 技术社区  · 14 年前

    我目前正在开发一款Android应用程序,这给我带来了一些麻烦。我的应用程序在很大程度上依赖于正确安装在屏幕上的图像。不幸的是,像fwvga/wvga分辨率差854和800这样的东西给我带来了一些真正的问题,除了其他尺寸/密度和分辨率之外。

    我不知道我是否错过了这一点,但我该如何在两种分辨率上正确显示我的应用程序,而不是“压扁”我的图像,或是切掉给我黑条的部分等等?

    似乎没有一个立即出现的解决方案,我可以让它自动显示一个不同的图像,从右屏幕的可绘制文件夹。

    我尝试过使用DisplayMetrics,但是除非我有明确的声明,它支持所有屏幕尺寸,Android操作系统实际上会“欺骗”我的应用程序关于HTE当前的分辨率。

    有人请告诉我有一个简单的解决办法。

    3 回复  |  直到 14 年前
        1
  •  2
  •   CommonsWare    14 年前

    如何让我的应用程序在两种分辨率上都正确显示,而不是“挤压”我的图像,或者切掉给我黑条的部分等等?

    imho,您可以从重新访问您的GUI设计开始:

    我的应用程序在很大程度上依赖于正确安装在屏幕上的图像。

    这在任何地方都不太管用,imho。例如,用户可以将窗口(包括浏览器)调整到任何所需的大小。

    似乎没有一个立即出现的解决方案,我可以让它自动显示一个不同的图像,从右屏幕的可绘制文件夹。

    因为Android设备可以有任意数量的屏幕尺寸,就像Windows和Web浏览器可以有任意数量的屏幕尺寸一样。Android允许您根据密度选择图像(例如, -hdpi )或屏幕大小(例如, -large 但这些都不符合决议,也不应该符合决议。

        2
  •  1
  •   Kevin Coppock    14 年前

    正如Commonware指出的,对于这种情况,最好的选择是重新考虑布局结构。使用相对布局和小部件,可能可以实现与当前所获得的结果类似的(如果不是相同的话)。如果你愿意寄样品,我们可以建议你怎么做。

    也就是说,问题的答案是在运行时查询设备的屏幕分辨率(记住通知栏和标题栏占用的空间,除非您在没有标题栏的情况下设置主题)。每种可能的屏幕分辨率都需要不同的图像,随着越来越多的设备(尤其是平板电脑)开始发布,您将不得不在发布时继续为每个不同的图像提供更多的图像和自定义代码。你可以看到为什么这不是一个理想的情况。

    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    int screenWidth = metrics.widthPixels();
    int screenHeight = metrics.heightPixels();
    

    然后您可以将其放入if-then-else块中,并确定分辨率,并相应地设置图像。我不推荐这个。

        3
  •  0
  •   A.R.    14 年前

    当涉及到显示和分辨率时,不可能在不挤压/拉伸图像或使用信箱的情况下将图像调整为任何纵横比。我知道这并不能真正回答你的问题,但是如果你不能从操作系统中获得可靠的屏幕大小信息,那么试着为最大分辨率挑选图像,为较小分辨率裁剪图像。只是要确保边界周围没有什么有趣的东西。