第四章 探究碎片

Fragment

Fragment是一种可以嵌入在Activity当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间。

Fragment的使用方式

简单用法

步骤:

  1. 创建fragment的xml文件,一个xml文件对应一个fragment。

  2. 写fragment类,这里需要注意的是:fragment继承androidx.fragment.app.Fragment类。在类中重写onCreateView()方法。

    1. public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    2. View view = inflater.inflate(R.layout.left_fragment,container,false);
    3. return view;
    4. }
  1. 在main.xml中写fragment。

动态添加碎片

步骤:

  1. 创建添加的碎片实例。
  2. 获取FragmentManager,在活动中可以直接通过调用getSupportFragmentManager()方法得到。
  3. 开启一个事务,通过调用beginTransaction()方法来完成。
  4. 向容器内添加或替换碎片,一般使用replace()方法实现,需要传入容器的id和待添加的碎片实例。
  5. 提交事务,调用commit()方法来完成。

在碎片中模拟返回栈

调用FragmentTransaction中的addToBackStack()方法。

碎片和活动之间进行通信

碎片的生命周期

碎片的状态和回调

  1. 运行状态:
    当一个碎片是可见的,并且它所关联的活动正处于运行状态时,该碎片也处于运行状态。

  2. 暂停状态:
    当一个活动进入暂停状态时,与它相关联的可见碎片就会进入到暂停状态。

  3. 停止状态:
    当一个活动进入停止状态,与它相关联的碎片就会进入到停止状态。

  4. 销毁状态:
    当活动被销毁时,与它相关联的碎片就会进入到销毁状态。

  • onAttach():当碎片和活动建立关联的时候调用。
  • onCreateView():为碎片创建视图时调用。
  • onActivityCreated():确保与碎片相关联的活动一定已经创建完毕的时候调用。
  • onDestroyView():当与碎片关联的视图被移除的时候调用。
  • onDetach():当碎片和活动解除关联的时候调用。

动态加载布局的技巧

使用限定符

通过使用large限定符令大屏幕设备自动加载layout_large文件夹下的布局,而小屏幕的设备则还是会加载layout文件夹下的布局。

使用最小宽度限定符

最小宽度限定符允许我们对屏幕得宽度指定一个最小值(以dp为单位),然后以这个最小值为临界点。