【发布时间】:2013-06-18 12:55:50
【问题描述】:
我看了文章http://developer.android.com/guide/practices/screens_support.html
对此我不太清楚:我是否必须制作不同的 XML 布局来支持不同的屏幕尺寸?
也许有一个简单的例子以更容易理解的方式解释这一点?
【问题讨论】:
我看了文章http://developer.android.com/guide/practices/screens_support.html
对此我不太清楚:我是否必须制作不同的 XML 布局来支持不同的屏幕尺寸?
也许有一个简单的例子以更容易理解的方式解释这一点?
【问题讨论】:
对此我不太清楚:我是否必须制作不同的 XML 布局 支持不同的屏幕尺寸?
没有。做相对的陈述,如android:layout_width="match_parent"。使用 9-patch 定义可拉伸图像。相应目录drawable中的文件密度和屏幕大小相关资源,例如drawable-xhdpi。这将意味着以不同的分辨率多次提供相同的图像资源。 ldpi 是 xhdpi 的 33.33%,mpdi 是 50%,hdpi 是 75%。 xhpi 相当于 iPhone Retina:如果有人给你 iOS Retina 图像资源,你可以为 Android 相应地缩小这些资源。
如果您试图保持向后兼容,那么您将不得不制作不同的 XML 布局的一个好时机。例如,当 Google 开始担心从右到左的文本时,android:layout_marginStart 仅在 API 17 中可用。这将在旧设备上静默失败,而您必须在 layout-v10 中提供相同的布局,例如将 android:layout_marginStart 替换为 android:layout_marginLeft。
最后,将您的 Android 用户界面视为一个网页。您可以做出的唯一安全假设是您必须填充空间,不要假设您必须填充多少空间。
【讨论】:
不,密度的重点是一种布局应该适用于所有手机和设备。有一个很好的例子来说明如何在布局here 中布置按钮。
请注意该链接中的一个视图如何具有android:layout_marginTop="94dp" 只要您使用 dp,您的布局就应该适用于所有设备。
另一种说法:您不必担心屏幕尺寸,只要: a)您总是以 dp 为单位测量距离,而不是像素 b)您总是以 sp 为单位测量字体大小,而不是像素 c) 对于每个图像,您将不同大小的图像放在不同的资源文件夹(hdpi、xdhpi 等)中
如果您遵循这些规则,那么一种布局在所有尺寸的屏幕上都应该看起来非常相似。
【讨论】:
不,您不必为每种尺寸的屏幕提供布局。您只需为屏幕设置一种布局。但是通过利用资源系统,您可以在适当的地方提供布局的替代版本。例如,您可能需要一种用于手机的布局和另一种用于平板电脑的布局。
【讨论】:
可能不是布局 xml,而是应该重复的维度 xml。
有时,如果您不必精确到小像素,使用 dp 会有所帮助。
【讨论】: