众所周知,现在的安卓系统有许多版本、许多构造器、许多屏幕尺寸...
对于开发人员来说,编写能够适配大部分设备的程序非常困难。
那么,作为开发人员必须掌握哪些技巧呢?
- 流式布局的技巧。
- 针对任何安卓版本开发的“标准”。
- ......
还有其他的想法吗?
首先,您应该阅读官方的多屏幕支持最佳实践指南。那里有很多好的建议,以及对兼容性要求的一般理解。
我发现一个非常有帮助,似乎很明显的方法,那就是在各种大小的模拟器中测试您的布局。当您将其扩展到1024x768时(尽管没有设备会有这样的分辨率),您的布局看起来如何?当它变得非常小而方形时呢?观察您的布局如何拉伸/收缩,这将有助于您调整它以更好地适应所有屏幕。
layout_weight
在布局中,android:layout_weight
是一个强大但未经记录的属性。使用它,您可以创建组件大小按百分比相对于彼此的布局。
例如:
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText android:layout_weight="80"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button android:layout_weight="20"
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content />
</LinearLayout>
在这个布局中,<EditText/>
将占用可用宽度的80%,而<Button/>
将占用可用宽度的20%。显然,这应该小心使用,以便即使它们很小,所有项目仍然可以使用。
<include />
另一个有用的布局技巧是将常见的布局部分捆绑到单独的文件中,并使用<include layout="@layout/smaller_section" />
进行包含。这样,您就可以重新排列布局的其他部分(例如横向布局),而无需保留整个并行版本的布局。
到目前为止,我发现的唯一几件事:
看看其他人会说什么会很有趣-特别是围绕为不同密度提供多个可绘制资源。我无法确定为什么有时需要使用-hdpi,有时不需要在hdpi屏幕上获得良好的结果。
我同意Johnny的观点,使用移动样式表。例如:
<link rel="stylesheet" href="screen.css" media="screen"/>
<link rel="stylesheet" href="handheld.css" media="handheld"/>
无论您在页面底部做什么,都要允许用户在两者之间进行切换。例如,许多“移动”站点在底部包括一个链接,以查看“完整”站点。这样,用户可以自主决定其设备的功能。
我倾向于使用一个移动样式表,只有在从移动设备访问应用程序时才包含。该样式表通常应用于最小宽度(取决于用户和设备要求),并将内容填充到屏幕宽度的100%。
其他建议: