【问题标题】:Android Screen sizes安卓屏幕尺寸
【发布时间】:2011-09-08 01:54:33
【问题描述】:

我需要知道安卓设备的屏幕尺寸以支持多种屏幕尺寸的应用程序。

【问题讨论】:

  • 按屏幕尺寸是否需要设备的物理尺寸。前 5 英寸还是 10 英寸??

标签: android screen-size


【解决方案1】:

在支持不同的屏幕尺寸方面,我先看看Screen Support Reference,也许能更好地解决你的问题。要查看特定尺寸的列表,请查看 Table 2

【讨论】:

    【解决方案2】:

    我认为没有所有现有屏幕尺寸的完整列表,因为新设备一直在问世。您看过Screen Sizes and Densities 上的页面和Supporting Multiple Screens 上的文档吗?

    【讨论】:

    • 我确实读过,我按照解释做了,但是当我在 android3 模拟器上测试我的应用程序时,我的应用程序出现在屏幕的一小部分。但我不会填满整个屏幕我可以控制那个?
    • 您需要在清单中使用<supports-screens> 标签来指明您的应用支持的屏幕尺寸。还有与清单中uses-sdk 标记的targetSdkVersion 属性的交互。如果您的 sdk 级别太低,运行更高级别的设备(和模拟器)可能会切换到应用程序的兼容模式,这可能会将您的应用程序限制为模拟 HVGA 屏幕。
    【解决方案3】:

    Android 支持多种屏幕尺寸。没有特定屏幕尺寸的列表。只有大概的范围。在"Supporting Multiple Screens" 阅读更多内容。

    【讨论】:

    • 我已经读过,但重点是我只想拥有一个 xml,我将通过我的代码控制小部件的位置
    • 您无法预测所有可能的屏幕尺寸变体。因此,您需要以与屏幕大小无关的方式工作。如果您阅读参考文章,您将了解可以采取哪些方法使您的代码在所有(或大多数)屏幕上运行。
    • 我从那篇文章中得到的信息是,我必须为不同的屏幕尺寸制作不同的 xml,然后
    • @inazaruk 是正确的,如果需要,您可以拥有适用于所有屏幕尺寸的单个 xml 布局,或者您可以为每个低、中或高 dpi 值提供基于 dpi 的布局.关键是允许视图根据需要并根据 dpi 自行调整大小,而不是自己绝对定位和调整大小。
    • 好的,但是当我按照你刚才所说的那样做时,我的应用程序在 android 3 模拟器上看起来很糟糕,这就是我尝试做我正在做的事情的原因
    【解决方案4】:
    【解决方案5】:

    看这张表:http://developer.android.com/guide/practices/screens_support.html#testing

    您可以使用此处的饼图了解相对屏幕尺寸的使用情况:http://developer.android.com/resources/dashboard/screens.html

    有关屏幕尺寸、分辨率和 dpi 值的列表,请查看:http://en.wikipedia.org/wiki/List_of_displays_by_pixel_density

    要计算实际 dpi 值,请在此处查看:http://en.wikipedia.org/wiki/Pixel_density#Calculation_of_monitor_PPI

    【讨论】:

      【解决方案6】:

      不同的屏幕尺寸如下。

      xlarge screens are at least 720dp 960dp
      large screens are at least 480dp x 640dp
      normal screens are at least 320dp x 470dp
      small screens are at least 320dp x 426dp
      

      如果您打算制作一个支持多种设备的应用程序,您还必须创建不同的布局目录来放置不同的布局。

      res/layout/my_layout.xml             // layout for normal screen size ("default")
      res/layout-small/my_layout.xml       // layout for small screen size
      res/layout-large/my_layout.xml       // layout for large screen size
      res/layout-xlarge/my_layout.xml      // layout for extra large screen size
      res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation
      

      如果您打算添加不同尺寸的图像,请将它们相应地放在以下文件夹中。 Android OS 会自动从中取出最合适的图像。

      res/drawable-ldpi/my_icon.png        // bitmap for low density
      res/drawable-mdpi/my_icon.png        // bitmap for medium density
      res/drawable-hdpi/my_icon.png        // bitmap for high density
      res/drawable-xhdpi/my_icon.png       // bitmap for extra high density
      

      【讨论】:

      • 如何在小屏文件夹中添加 , ldpi(240*320) 和 hdpi(480*640) 的图片!
      • 您只需将正确调整大小的图像放入相应的可绘制文件夹中。 Android OS 会根据设备的屏幕尺寸自动从对应的drawable文件夹中获取图片。
      • 感谢 enadun,我想你想说这些类型的文件夹。 pages.citebite.com/p2t7t5p0b9qki
      【解决方案7】:

      这里有一个小功能可以知道你的设备的英寸大小,以防你需要它来支持多尺寸屏幕:

      public double getInchSize()
      {
          DisplayMetrics metrics = getResources().getDisplayMetrics();
          return Math.hypot(metrics.widthPixels/metrics.xdpi, metrics.heightPixels/metrics.ydpi)
      }
      

      希望对你有帮助

      【讨论】:

        【解决方案8】:

        它来了!

        • (240, 320)
        • (240, 400)
        • (320, 480)
        • (360, 640)
        • (480, 640)
        • (480, 800)
        • (480, 854)
        • (540, 960)
        • (600, 800)
        • (600, 1024)
        • (640, 960)
        • (720, 1280)
        • (768, 1280)
        • (768, 1024)
        • (800, 1280)
        • (1080, 1920)
        • (1200, 1920)
        • (1600, 2560)

        来自 http://en.wikipedia.org/wiki/Comparison_of_Android_devices 的 html 源解析为:

        import re
        
        s = ""
        
        with open("sizes.html", "r") as src:
            s = src.read()
        
        res = re.findall('([0-9]+)\s*[×xX]\s*([0-9]+)', s)
        
        sizes = set()
        
        for match in res:
            size_int = [int(match[0]), int(match[1])]
            size = (min(size_int), max(size_int))
            if size not in sizes:
                sizes.add(size)
        
        sorted_sizes = list(sizes)
        sorted_sizes.sort(key=lambda sz: sz[0])
        
        for sz in sorted_sizes:
            print(sz)
        

        (原谅我的蟒蛇)

        【讨论】:

        • 感谢您的链接!这就是我想知道的......多少像素。
        • @Vincent 不客气(还有,任何人:上面的列表包含脚本输出,其中手动删除了几个(大)相机分辨率)。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多