碎片是一种可以嵌入在活动当中的UI片段,他能让程序更加合理和充分地利用大屏幕空间,因而在平板上应用的很广泛。
动态的添加碎片主要分为五步:
1.创建待添加的碎片实例
2.获取FragmentManager,在活动中可以直接通过调用getSupportFragmentMessager()方法得到。
3.开启一个事务,通过调用beginTransaction()方法开启
4.向容器内添加或替换碎片,一般使用replace()方法实现,需要传入容器的id和待添加的碎片实例。
5.提交事务,调用commit()方法完成。
addToBackStack() 方法,可以接收一个名字用于描述返回栈的状态,一般传入null即可。
为了方便碎片和活动之间进行通信,FragmentManager提供了一个类似与findViewById()方法,专门从布局文件中获取碎片的实例,代码如下:
RightFragment rightFragment=(RightFragment) getSupportFragmentManager().findFragmentById(R.id.right_fragment);
调用FragmentManager的findFragemntById()方法,可以在活动中得到响应碎片实例,可以轻松调用碎片里的方法了。
每个碎片中都可以通过调用getActivity()方法得到和当前碎片相关连的活动实例
MainActivity activity=(MainActivity) getActivity();
若当碎片中需要使用Context对象时,也可以使用getActivity()方法,因为获取到的活动本省就是一个Context对象。
碎片与碎片之间的通信
首先在一个碎片中可以得到与相关联的活动,然后再通过再这个活动去获取另一个碎片的实例,即可实现不同碎片之间的通信。
碎片的生命周期
状态:
1.运行状态:当一个碎片是可见的,并且它所关联的活动正处于允许状态时,碎片也处于运行状态。
2.暂停状态:当一个活动进入暂停状态时(由于另一个未沾满屏幕的活动被添加到栈顶),与他相关联的可见碎片就会进入到暂停状态。
3.停止状态:当一个活动进入停止状态时,与他下个关联的碎片就会进入到停止状态或者通过调用FragmentTransaction的remove(),replace()方法将碎片从活动中移除,但如果再事务提交之前调用addToBackStack()方法,这时的碎片也会进入到停止状态。总的来说,进入停止状态的碎片对用户来说是完全不可见的,有可能会被系统回收。
4.销毁状态:碎片是依附于活动而存在的,因此当活动被销毁时,与他先关联的碎片就进入到了销毁状态,或者通过调用FragmentTransaction的remove(),replace()方法将碎片从活动中移除,但在事务提交之前并没有调用addToBackStack()方法,这时的碎片也进入到了销毁状态。
回调:
onAttach()当碎片和活动建立关联的时候调用
onCreateView()当碎片创建视图时调用。
onActivityCreated()确保于碎片相关联的活动一定已经创建完毕的时候调用。
onDestroyView()当与碎片关联的视图被移除的时候调用。
onDetach()当碎片和活动解除关联的时候调用。
Android中一些常见的限定符:
1.大小
small:提供给小屏幕设备的资源
normal:提供给中等设备屏幕的资源
large:提供给大屏幕设备的资源
xlarge:提供给超大屏幕设备的资源
2.分辨率
ldpi提供给低分辨率设备的资源(120dpi以下)
mdpi提供给中等分辨率设备的资源(120dpi---160dpi)
hdpi提供给高分辨率设备的资源(160--240)
xhdpi提供给超高设备的资源(240--320)
xxhdpi提供给超超高设备的资源(320--480)
3.方向
land提供给横屏设备的资源
port提供给竖屏设备的资源android中碎片 -手机平板兼顾
原文:https://www.cnblogs.com/hy-nobug/p/12168735.html