由于平板电脑的屏幕足够大,我们会发现很多应该采用了双页模式即程序在左侧面板上显示一个包含子项的列表,右侧面板显示内容,而手机屏幕一次只能显示一页内容,因此两个页面需要分开显示。
为了让碎片发挥更大的空间,我们可以考虑如何才能让程序根据设备的屏幕大小和分辨率在运行的时候动态加载哪个布局,那就是使用限定符。
比如:
单页模式:res/layout/activity_main,xml (只显示列表页)
双页模式:res/layout-large/activity_main.xml(按比例同时显示列表页和内容页即包含两个碎片)
其中large就是一个限定符,那些屏幕被认为是large的设备就会自动加载layout-large文件夹下的布局,而小屏幕的设备则会加载layout文件夹下的布局。
- 根据屏幕大小,有以下限定符:
small:给小屏幕设备提供资源
normal:给中等屏幕设备提供资源
large:给大屏幕设备提供资源
xlarge:给超大屏幕设备提供资源 - 根据屏幕分辨率,有以下限定符:
ldpi:给低分辨率设备提供资源(120dpi以下)
mdpi:给中等分辨率设备提供资源(120dpi~160dpi)
hdpi:给高分辨率设备提供资源(160dpi~240dpi)
xhdpi:给超高分辨率设备提供资源(240dpi~320dpi)
xxhdpi:给超超高分辨率设备提供资源(320dpi~480dpi) 根据屏幕方向,有以下限定符:
land:给横屏设备提供资源
port:给竖屏设备提供资源新问题
上面的示例中large限定符到底多大,为了更加灵活地为不同的设备加载布局,这时可以使用更加具体的最小宽度(smallest-width)限定符。
最小宽度限定符允许我们对屏幕的宽度指定一个最小值(单位:dp),然后以这个最小值为临界点,屏幕宽度大于这个值的设备加载一个布局,屏幕宽度小于这个值的设备加载另一个布局。
举例:res/layout-sw500dp/activity_main.xml
说明:当程序运行在屏幕宽度大于500dp的设备上时,会加载layout-sw500dp/activity_main.xml布局,当程序运行在屏幕宽度小于500dp的设备上时,会加载默认的layout/activity_main.xml布局。