设计选择性的布局和图片,替代资源的类型,取决于应用程序的需求。通常,应该使用尺寸和方向限定符提供选择性的布局资源,使用密度限定符提供选择性的图片资源。以下部分分别概括了该如何使用尺寸和密度限定符提供选择性的布局和图片。
选择性的布局,应该确保应用程序的布局:
· 适合在小屏幕上(确保可以实际使用)
· 在大屏幕上,确保充分利用额外的屏幕空间
· 适应竖屏和横屏
如果用户界面,需要让位图来适应视图的大小(如一个按钮的背景图片),应该使用Nine-Patch 位图文件。Nine-Patch文件基本上是一个PNG文件它可以在特定的二维地区伸展。当系统需要拉伸位图所在的视图时,系统会拉伸Nine-Patch文件,但是仅仅拉伸的是指定区域。正因为如此,不需要提供不同的屏幕尺寸不同的图片,因为Nine-Patch的位图,可以调整到任何尺寸。然而,应该为不同的屏幕密提供不同的Nine-Patch文件。
选择性的图片
Figure 4. 支持各密度的位图的相对大小
几乎每个应用程序都应当为不同的屏幕密度提供图片资源,因为几乎每一个应用程序都拥有一个启动图标,而改图标应当在不同密度的屏幕上显示良好。
注: 只需提供密度相关的位图文件(.png, .jpg, 或者 .gif) 和 Nine-Path 文件(.9.png)。如果需要使用XML来定义形状,颜色或者可绘制的资源,应当在默认的drawable 目录备份一份。
要创建不同密度的选择性的图片,应该在四个广义密度之间遵循3:4:6:8的缩放比例。比如,一个中密度下为48x48像素的位图(应用程序启动图标),与之对应的所有不同的尺寸应当是:
· 低密度为36x36
· 中密度为48x48
· 高密度为72x72
· 超高密度为96x96
配置实例
为了您针对不同类型的设备进行设计,这里是典型的屏幕宽度的一些数字:
· 320dp: 一个典型的手机屏幕 (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, 等).
· 480dp: 像Streak一样的中立平板屏幕 (480x800 mdpi).
· 600dp: 7”平板 (600x1024 mdpi).
· 720dp: 10”平板 (720x1280 mdpi, 800x1280 mdpi, 等).
使用表2中的尺寸限定符,应用程序可以使用任何您想要的宽度和/或高度为手机和平板之间切换不同的布局资源。比如,如果600dp是平板布局所支持的最小可用宽度,可以提供这两套布局:
res/layout/main_activity.xml # For handsets
res/layout-sw600dp/main_activity.xml # For tablets
在这种情况下,为了让平板布局实用,可用屏幕空间的最小宽度必须为600dp。
要进一步定制UI区分大小,如7“和10”平板的情况下,可以定义额外的最小宽度布局:
res/layout/main_activity.xml
res/layout-sw600dp/main_activity.xml
res/layout-sw720dp/main_activity.xml
注意,前面的两个例子资源使用“最小宽度”限定符,swdp,它指定屏幕两边的最小值,无论设备的当前方向。因此,使用swdp是简单的通过忽略屏幕方向的方式来指定布局的整体屏幕尺寸。
然而,在某些情况下,可能重要的是布局究竟有多大的宽度或高度目前是可用的。例如,有两个并排的布局,每当屏幕宽度至少提供600dp时使用,不论设备是否是在横向或纵向。在这种情况下,资源看起来像这样:
res/layout/main_activity.xml
res/layout-w600dp/main_activity.xml
请注意,第二组使用“可用宽度”限定符,wdp。这样,一台设备可能根据屏幕的方向会使用这两种布局(如果可用宽度在一个方向至少600dp而在另一个方向小于600dp)。
如果关注的是可用高度,那么同样可以使用hdp限定符。甚至可以结合使用wdp 和 hdp 限定符。