第四章 探究碎片
Fragment
Fragment是一种可以嵌入在Activity当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间。
Fragment的使用方式
简单用法
步骤:
创建fragment的xml文件,一个xml文件对应一个fragment。
写fragment类,这里需要注意的是:fragment继承androidx.fragment.app.Fragment类。在类中重写onCreateView()方法。
public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.left_fragment,container,false);
return view;
}
- 在main.xml中写fragment。
动态添加碎片
步骤:
- 创建添加的碎片实例。
- 获取FragmentManager,在活动中可以直接通过调用getSupportFragmentManager()方法得到。
- 开启一个事务,通过调用beginTransaction()方法来完成。
- 向容器内添加或替换碎片,一般使用replace()方法实现,需要传入容器的id和待添加的碎片实例。
- 提交事务,调用commit()方法来完成。
在碎片中模拟返回栈
调用FragmentTransaction中的addToBackStack()方法。
碎片和活动之间进行通信
碎片的生命周期
碎片的状态和回调
运行状态:
当一个碎片是可见的,并且它所关联的活动正处于运行状态时,该碎片也处于运行状态。暂停状态:
当一个活动进入暂停状态时,与它相关联的可见碎片就会进入到暂停状态。停止状态:
当一个活动进入停止状态,与它相关联的碎片就会进入到停止状态。销毁状态:
当活动被销毁时,与它相关联的碎片就会进入到销毁状态。
- onAttach():当碎片和活动建立关联的时候调用。
- onCreateView():为碎片创建视图时调用。
- onActivityCreated():确保与碎片相关联的活动一定已经创建完毕的时候调用。
- onDestroyView():当与碎片关联的视图被移除的时候调用。
- onDetach():当碎片和活动解除关联的时候调用。
动态加载布局的技巧
使用限定符
通过使用large限定符令大屏幕设备自动加载layout_large文件夹下的布局,而小屏幕的设备则还是会加载layout文件夹下的布局。
使用最小宽度限定符
最小宽度限定符允许我们对屏幕得宽度指定一个最小值(以dp为单位),然后以这个最小值为临界点。