Android Confusion支持多种屏幕尺寸

时间:2014-01-31 04:18:25

标签: java android xml layout

我已经阅读了关于支持多种屏幕尺寸的Android文档,但我似乎无法绕过它。我知道限定符需要在布局名称中设置,并且android选择限定符接近手机宽度的那个。

我现在不要担心平板电脑,但是当我为我的物理设备开发时,一切都很好并且在默认布局文件夹中都是花花公子:layout / main.xml

但如果我在朋友手机上测试三星Galaxy S4,所有内容都是以垂直方式拉伸的。我只是不知道从哪里开始......

我是否可以实现一组标准文件夹来布局我的布局,然后进行编辑以获得最佳性能?

4 个答案:

答案 0 :(得分:1)

http://developer.android.com/training/basics/supporting-devices/screens.html。这一切都在本教程链接中进行了解释。

答案 1 :(得分:1)

如果一个布局应该支持所有屏幕,那么

  1. 你的应用程序应该是标签和手机的similer

  2. 从不对布局使用固定值(例如:300dp,15dp),所有都是换行,匹配,填充取决于要求,

  3. 制作所有图标,2或4种不同尺寸的图像

  4. 注意:如果您对较小到较大的设备ui进行微小更改,那么在创建时获取设备的高度和宽度,从java进行更改(图像,布局宽度等)运行时

    如果您的应用不是从小型到大型设备的模拟器

    使用布局(手机),布局大(7英寸标签)layout-xlarge(10英寸标签)

答案 2 :(得分:1)

从设备无关像素(dp)和字体(sp)

的可伸缩独立像素开始

如果在此之后垂直拉伸某些东西,可能意味着它是一个背景图片,试图填满整个布局的高度(顺便说一下,下次遇到问题时,请发布相关的xml代码和尺寸图像,或至少是问题的屏幕截图)。

在这种情况下,只需使用不同的大小限定符来解决您的问题(您的密度限定符)。密度限定符对位图的宽度或高度没有帮助,这些位图大于设备屏幕的宽度或高度。这只是您应该注意的经验法则。

screenshot of Android Studio's layout designer comparing the same layout for different screen types

使用Android Studio / IntelliJ布局设计器中的工具栏选择框,可以一次快速测试多个设备屏幕。这是最快的方法。不要使用Eclipse,它的ADT布局设计师没有这种能力(至少,不是我最后一次检查)。即使你大部分时间都使用Eclipse,也值得使用Android Studio / intelliJ来实现该功能,然后切换回Eclipse(假设它仍然是你最喜欢的IDE之后),当你完成测试布局的这个方面时

此外,不要尝试为遇到的每个尺寸限定符执行不同的布局。仅对实际给您带来问题的布局使用不同大小的限定符。不要忘记,不需要复制的常见布局组件只能在父布局中抽象出来。如果您可以在不使用大小限定符的情况下找到解决特定问题的方法,那么这种方法也可以正常工作。例如,如果不是使用单个图像作为背景,则可以将其替换为您不介意以不同宽高比剪裁的较大图像,或者将背景图像替换为完全不同且抽象的图像(如实体)颜色,渐变,平铺背景,大型矢量图形或大型补丁(png),在不同的宽高比下看起来还不错,可能更简单。

答案 3 :(得分:1)

在高层,你只需要照顾这些事情:

- 最好将图像切成XHDPI(720x1280)或XXHDPI(1080x1920)分辨率,并将它们保存在各自的文件夹中。 XHDPIdrawable-xhdpiXXHDPI张图片drawable-xxhdpi放入XML文件夹中。一组图像切片就足够了 - 如果您不支持平板电脑,则无需为同一屏幕编写不同的android:layout_width布局(非常罕见的情况除外)
- 尽量避免硬编码android:layout_height& wrap_content个参数。使用fill_parentmatch_parentdrawable - 尽量避免将任何图像切片保留在简单的drawable-xhdpi文件夹中,而是保留在特定的可绘制文件夹中,如drawable-hdpiOutOfMemoryException等。 - 尝试使用,颜色代码和尽可能多地使用9个补丁图像,而不是使用图像来减少构建大小,还有助于避免drawable。 - 在简单的XML文件夹中,保留所有{{1}}个可绘制内容,例如按钮的背景,其中包含单独的图像,用于点击&重点国家等。

如果您按照这些步骤操作,则无需担心大多数情况下支持多屏幕分辨率。