碎片是什么
碎片(Fragment)是一种可以嵌入在活动中的UI片段,他能让程序更加合理和充分地利用大屏幕的空间
碎片的使用方式
- 碎片通常实在平板中使用的
碎片的简单用法
- fragment标签在布局中添加碎片,android:name属性用来显式指定要添加的碎片类名,一定要写全名(包括包名)
动态添加碎片
创建待添加的碎片实例
AnotherRightFragment fragment = new AnotherRightFragment();
获取FragmentManager,在活动中可以直接调用getFragmentManager()方法得到
FragmentManager fragmentManager = getFragmentManager();
开启一个事务,通过beginTransaction()方法开启
FragmentTransaction transaction = fragmentManager.beginTransaction();
向容器内加入碎片,一般使用replace()实现,需要传入容器的id和带添加的碎片实例
transaction.replace(R.id.right_layout,fragment);
提交事务,调用commit方法来完成
transaction.commit();
在碎片中模拟返回栈
FragmentTransaction提供了一个addToBackStack()方法,可以将一个事务添加到返回栈中
transaction.addToBackStack(null);
碎片和活动之间的通信
- 碎片都是嵌入在活动中显示的
调用FragmentManager的findFragmentById()方法,可以在活动中相应碎片的实例
RightFragment rightFragment = (RightFragment)getFragmentManager.findFragmentById(R.id.right_fragment);
在碎片中可以调用getActivity()方法来得到和当前碎片相关联的活动
MainActivity activity = (MainActivity)getActivity();
碎片的生命周期
- 碎片一共有运行、暂停、停止、销毁四种状态
- 碎片是依附活动而存在的
- 碎片独特的方法:
- onAttach():当碎片和活动建立关联时调用
- onCreateView:为碎片创建视图(加载布局)时使用
- onActivityCreated:确保与碎片相关联的活动一定已经创建完毕的时候调用
- onDestroy:但与碎片相关联的视图被移除是调用
- onDetach:当碎片和活动解除关联的时候调用
动态加载布局的技巧
使用限定符
使用最小宽度限定符
- 最小宽度限定符允许我们对屏幕的宽度指定一个最小指(以 dp 为单位) ,然后以这个最小值为临界点,屏幕宽度大于这个值的设备就加载一个布局,屏幕宽度小于这个值的设备就加载另一个布局