碎片
碎片的基本概念
碎片是一种可以嵌入到活动当中的UI片段,让程序更合理的运用大屏幕空间,它拥有自己的布局和生命周期,比较常见的应用是在新闻标题列表当中,在平板中屏幕很大,如果只显示一个标题活动,很浪费空间,这时不如设计一个标题碎片,一个内容碎片,在活动中引入这两个碎片,会使屏幕空间看起来更舒适合理。
碎片的基本创建和使用方式
- 创建碎片所展示的布局。
- 创建一个类继承Fragment。
- 在类中的onCreateView方法中加载刚刚写的动态布局。
- 把此碎片放置到准备加入的活动布局中。
第一步 创建布局
第二步 创建类继承Fragment并加载布局
第三步 将写好的碎片加到活动布局中
这一步中,fragment中的name属性指明要添加的碎片类名,要将类的包名也加上!!!
碎片的动态添加
- 通过getSupportFragmentManager()方法得到FragmentManager对象。
- 通过该对象的beginTransaction()方法得到FragmentTransaction对象开启事务。
- 调用tracsaction的replace方法,传入两个参数,第一个为待添加碎片的容器id,第二个对象为碎片的实例fragment。
- 调用transaction的commit()方法提交该事务。
//创建一个MyFragment实例
MyFragment myFragment = new MyFragment();
//获取FragmentManager实例
FragmentManager fragmentManager = getFragmentManager();
//开启FragmentTransaction事务
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
//通过事务向Activity的布局中添加MyFragment
fragmentTransaction.replace(R.id.main_activity_layout, myFragment);
//提交事务
fragmentTransaction.commit();
碎片和活动进行通信
- 在活动中,FragmentManager类提供了一个fingFragmentById方法,可以找寻你创建的碎片,例如创建的是RightFragment碎片。即可用
RightFragment rightFragment = (RightFragment)getSupportFragmentManager().findFragmentById(R.id.right_frag);
然后在通过rightFragment来使用碎片中的方法。
- 在碎片中可以直接用getActivity()方法来得到活动的实例,从而使用活动中相应的方法。
碎片的生命周期
- 碎片的生命周期内,有4中状态,分为运行状态,暂停状态,停止状态,销毁状态。
- 碎片的生命周期与活动的生命周期很相似,相比活动的生命周期,它多了五个,分别是:onAttach:当碎片与活动建立联系时调用。onCreateView:加载碎片的视图时调用。onActivityCreated:与碎片相关联的活动建立完成时调用。onDestoryView:碎片的视图被移除时调用,onDetach:碎片与活动取消关联时调用。
动态加载布局
- 动态加载布局,应用于程序根据模拟器的屏幕尺寸自动选择加载相应的布局。
如何动态加载
- 在res文件下建立layout-large文件,在里面重新创建一个main-activity.xml文件。
- 当再次启动程序时,如果屏幕属于large大小,则会自动加载新建立的布局,如果是普通的大小,则还会加载原来的layout中的布局。
- 不仅仅可以建立laout-large,还有许多,比如layout-sw600dp等等,根据-后面的数据来判断屏幕的归属范围。