安卓学习第七天-动态加载布局的技巧

虽然动态添加碎片的功能很强大,但在很多实际开发过程中,它只是在一个布局文件中进行一些添加和替换的操作。若我们的程序能够根据设备的分辨率或屏幕的大小在运行时来决定加载哪个布局,那我们可以发挥的空间就很多了,下面我们一起来简单看一下动态加载布局的技巧。

1.使用限定符
我们如果经常使用平板我们会发现在平板的屏幕上我们很多的使用的是双页模式,但是在手机一次只能显示一页,我们在运行程序是添加Qualifiers限定符帮助我们解决这个问题
我们将activity_main中的代码修改如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.pc123.left_fragement.MainActivity">

    <fragment
        android:id="@+id/left_frament"
        android:name="com.example.pc123.left_fragement.leftFragement"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

</LinearLayout>

只留下一个左侧的布局。
在res下新建一个activity_large文件,在其中新建一个名字也是activity_main的布局文件,其中代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <fragment
        android:id="@+id/left_fragment"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        tools:ignore="Suspicious0dp" />

    <fragment
        android:id="@+id/right_fragmennt"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        tools:ignore="Suspicious0dp" />
</LinearLayout>

可见layout/layout_main中包含了一个碎片,而layout_large/layout_main中包含了两个碎片,其中large就是一个限定符,那些屏幕被认为是large的就会自动加载layout_large文件,然后将mainactivity中的replaceFragment()中的代码注释掉。
还有几种限定符介绍如下:
大小:
1. small:提供给小屏幕设备的资源
2. normal:提供给中等屏幕的资源
3. large:提供给大屏幕设备的资源
4. xlarge:超大屏幕
分辨率:
5. ldpi:提供给低分辨率(120dpi以下)
6. mdpi:中等分辨率(120-160)
7. hdpi:高分辨率(160-240)
8. xhdpi:超高(240-320)
9. xxhdpi(320-480)
方向:
10. land:横屏设备
11. port:竖屏设备

2.使用最小宽度限定符
我们在上面解决了单双页的问题,但是我们对large到底是多大还不能判断,所以我们需要引入新的限定符,来实现这些,为此我们引入了Smallest-widthQualifier。
同样的方法我们在res下新建layout-sw600dp文件,在这个文件夹下新建activity_main布局,在其中添加我们想用的布局元素,当我们运行在屏幕宽度大于600dp的设备上时就会调用这个文件,反之还是会调用默认的文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

li_jeremy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值