(1) 使用的知识点:fragment-xml分屏布局,inflate,fragment事务操作。
(2) 开发的顺序为:局部layout设计 ——> 创建相应的类(继承Fragment)inflate.layout ——>
修饰activity_main.xml(使用<fragment>设计分屏):特别注意android:name要加碎片类名 ——>
开启Fragment事务操作。
(3)Fragment实务操作代码(位于MainActivity下)(这也是活动和碎片产生关联的方法)
……
//其中参数fragment就是new出来的打气筒集成的类 private void replaceFragment(Fragment fragment){ FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.replace(R.id.button,fragment); transaction.commit(); }
……
(4)综上,fragment事务那块的顺序如下:
①先获取支持fragment的管理;
②然后管理开启操作事务;
③事务.要做的事情,其中.有一定:的意思;
④事务提交给boss-mainThread。
(5)在碎片中模拟返回栈
上面可以在按钮Back键之后程序会直接退出,如果想模拟类似于返回栈的效果,按下Back键可以返回到上衣个碎片。
只要在Fragment中的事务中使用addToBackStack()方法即可。
//其中参数fragment就是new出来的打气筒集成的类 private void replaceFragment(Fragment fragment){ FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.replace(R.id.button,fragment); transaction.addToBackStack(null);//参数一般为null即可 transaction.commit(); }
(6)碎片和活动之间进行通信
①为了方便碎片和活动之间进行通信,FragmentManager提供了一个类似于findViewById()的方法,专门用于从布局文件中获取随便的实例,代码如下:
RightFragment rightFragment = (RightFragment)getFragmentManager().findFragmentById(R.id.right_fragment);
②碎片调用活动就更简单了,getActivity()即可
MainActivity activity = (MainActivity) getActivity();
(7)碎片的生命周期
碎片是依附于活动而存在的,一般来说活动的生命周期是7步四种,四种分别是运行状态、暂停状态、停止状态和销毁状态。
当活动处于哪个状态的时候,响应的碎片就处于哪个状态。碎片比活动多了5个回调方法。
①onAttach():当碎片和活动简历关联的时候调用;
②onCreateView():为碎片创建视图时调用;
③onActivityCreated():确保与碎片相关联的活动一定已经创建完毕的时候调用;
④onDestroyView():当与碎片关联的视图被移除的时候调用;
⑤onDetach():当碎片和活动解除关联的时候调用。
(8)动态加载布局的技巧
使用限定符可以动态加载布局,如果在res目录下新建layout-large文件夹,也布置同样的activity_main.xml。如果屏幕够大,那么久使用layout-large下面的xml。
①大小:small、normal;large;xlarge;
②分辨率:ldpi;mdpi;hdpi;xhdpi;xxhdpi;
③方向:land(横屏);port(竖屏)。
④也可以做精准限定:layout-sw600dp,这意味着当程序运行在屏幕宽度大于600dp的设备上时,会加载layout-sw600dp/activity_main布局,当程序运行在屏幕宽度小于600dp的设备上时,则仍然加载默认的layout/activity_main布局。
好了,碎片到此为止8个知识点暂时结束。