(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():当碎片和活动解除关联的时候调用。

[fragment碎片]分屏操作&amp;返回栈&amp;碎片与活动通信&amp;动态加载适配硬件


(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个知识点暂时结束。

相关文章: