2014-01-31 88 views
0

我已阅读有关支持多种屏幕尺寸主题的Android文档,但我似乎无法将其包裹在头上。我知道修饰符需要在布局名称中设置,并且android会选择一个限定符与手机宽度关联的修饰符。关于支持多种屏幕尺寸的Android混乱

我不是要担心的时刻片,但是当我开发我的物理设备,一切都很好,很正常,都在默认布局文件夹:布局/ main.xml中

但如果我测试我的朋友手机三星Galaxy S4的一切都以垂直方式延伸。我只是不知道从哪里开始真的...

是否有一组标准文件夹可以实现我的布局,然后编辑优化性能?

回答

1

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

  1. 您的应用程序theame应该是选项卡和手机

  2. similer从来没有使用固定的值,像布局(例如:300dp,15dp)都是包裹物,比赛,填充取决于要求,

  3. 使所有的图标,图像在2种或4个不同的尺寸

注意:如果你有一个从小到大设备UI小的变化,那么在创建获取设备的高度和宽度,进行更改(图像,布局宽度等)运行时从Java

如果你的应用无法从小similer到大设备

使用布局(移动台),布局大(7个英寸标签)布局XLARGE(10英寸标签)

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),看起来不同的长宽比,这可能会更简单。

1

在较高水平,你只需要把这些东西护理:

- 更好的有分辨率为切片或者XHDPI(720x1280)OR XXHDPI(1080×1920)的图像,并让他们在各自的文件夹。 XHDPI图片分为drawable-xhdpiXXHDPI图片分为drawable-xxhdpi文件夹。一组图像切片就足够了。
- 你并不需要编写不同XML布局在同一画面,如果你不支持平板电脑(除了非常罕见次)
- 尽量避免硬编码android:layout_width & android:layout_height参数。使用wrap_content,fill_parentmatch_parent
- 尽量避免憋在简单drawable文件夹的任何图像切片具体绘制的文件夹内,而不是像保持drawable-xhdpidrawable-hdpi
- 尝试使用,颜色代码& 9块图像尽可能的使用,而不是针对图像这一切将减少构建大小,也有助于避免OutOfMemoryException
- 里面简单drawable文件夹,让您的所有XML可绘像单独的图像按钮的背景点击&焦状态等

如果您按照这些步骤,你不需要担心支持多种屏幕分辨率对于大多数情况。