Android之动态加载布局
限定符的作用
由于屏幕大小的区别,平板电脑为双页模式,手机为单页模式,使用限定符,可以在程序运行时判断应该是使用双页模式还是单页模式。
常见的限定符
分辨率限定符:
限定符 | 描述 |
---|---|
ldpi | 120 dpi 以下设备 |
mdpi | 120 dpi ~ 160 dpi 设备 |
hdpi | 160 dpi ~ 240 dpi 设备 |
xhdpi | 240 dpi ~ 320 dpi 设备 |
xxhdpi | 320 dpi ~ 480 dpi 设备 |
方向限定符:
限定符 | 描述 |
---|---|
land | 横屏设备 |
port | 竖屏设备 |
限定符的用法:
修改FragmentTest项目中的activity_main.xml 文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<fragment
android:id="@+id/left_fragment"
android:name="com.example.fragmenttest.LeftFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
在res目录下新建layout-large 文件夹,在这个文件夹下新建一个布局,也叫做activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<fragment
android:id="@+id/left_fragment"
android:name="com.example.fragmenttest.LeftFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<fragment
android:id="@+id/right_fragment"
android:name="com.example.fragmenttest.RightFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3" />
</LinearLayout>
layout/activity_main 布局只包含了一个碎片,即单页模式,而layout-large/
activity_main 布局包含了两个碎片,即双页模式。其中large 就是一个限定符,那些屏幕被认为是large 的设备就会自动加载layout-large 文件夹下的布局,而小屏幕的设备则还是会加载layout 文件夹下的布局。
注意:将 Activity 中 replaceFragment() 方法注释掉,因为现在的主布局已经没有 right_layout
平板运行结果:
手机运行结果: