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