码迷,mamicode.com
首页 > 其他好文 > 详细

探究碎片(三)

时间:2015-03-30 11:30:13      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

1.Fragment : 碎片
2.FrameLayout : 碎片布局


在使用动态添加碎片时,需要配合碎片布局来完成,主要分为 5 步:
 1.  创建待添加的碎片实例。 MyFrame  my = new MyFrame();
 2.  获取到 FragmentManager,在活动中可以直接调用 getFragmentManager()方法得到。
 3.  开启一个事务,通过调用 beginTransaction()方法开启。
 4.  向容器内加入碎片,一般使用 replace()方法实现,需要传入容器的 id和待添加的碎
     片实例。
 5.  提交事务,调用 commit()方法来完成

在碎片中模拟返回栈:
 FragmentTransaction 中提供了一个 addToBackStack()方法,可以用于将一
 个事务添加到返回栈中.

碎片和活动之间进行通信:
 1.活动中调用碎片:
  RightFragment rightFragment = (RightFragment) getFragmentManager().findFragmentById(R.id.right_fragment);
 2.碎片中调用活动:
  MainActivity activity = (MainActivity) getActivity();
 3.碎片和碎片通信:
  首先在一个碎片中可以得到与它相关联的活动,然后再通过这个活动去获取另外一个碎片的实例,
  这样也就实现了不同碎片之间的通信功能。

     碎片的生命周期
1.  运行状态
 当一个碎片是可见的,并且它所关联的活动正处于运行状态时,该碎片也处于运行状态。
2.暂停状态
 当一个活动进入暂停状态时(由于另一个未占满屏幕的活动被添加到了栈顶) ,与它相关联的可见碎片就会进入到暂停状态
3.停止状态
 当一个活动进入停止状态时,与它相关联的碎片就会进入到停止状态。
 或者通过调用 FragmentTransaction 的 remove()、replace()方法将碎片从活动中移除,
 但有在事务提交之前调用 addToBackStack()方法,这时的碎片也会进入到停止状态。总的来说,
 进入停止状态的碎片对用户来说是完全不可见的,有可能会被系统回收。
4.销毁状态
 碎片总是依附于活动而存在的,因此当活动被销毁时,与它相关联的碎片就会进入到销毁状态。
 或者通过调用 FragmentTransaction 的 remove()、replace()方法将碎片从活动中移除,
 但在事务提交之前并没有调用 addToBackStack()方法,这时的碎片也会进入到销毁状态。

碎片还提供了一些附加的回调方法:
 1.  onAttach()
  当碎片和活动建立关联的时候调用。
 2.  onCreateView()
  为碎片创建视图(加载布局)时调用。
 3.  onActivityCreated()
  确保与碎片相关联的活动一定已经创建完毕的时候调用。
 4.  onDestroyView()
  当与碎片关联的视图被移除的时候调用。
 5.  onDetach()
  当碎片和活动解除关联的时候调用。

     动态加载布局的技巧
1.限定符使用: 和系统提供drawable文件夹同一个特点
 屏幕特征  限定符  描述
    small    提供给小屏幕设备的资源
 大小   normal   提供给中等屏幕设备的资源
    large    提供给大屏幕设备的资源
    xlarge   提供给超大屏幕设备的资源
  
    ldpi     提供给低分辨率设备的资源(120dpi以下)
 分辨率   mdpi     提供给中等分辨率设备的资源(120dpi到 160dpi)
    hdpi     提供给高分辨率设备的资源(160dpi到 240dpi)
    xhdpi    提供给超高分辨率设备的资源(240dpi到 320dpi)

 方向   land     提供给横屏设备的资源
    port     提供给竖屏设备的资源

2.使用最小宽度限定符:sw (Smallest-width Qualifier)  最小宽度限定符是在 Android 3.2 版本引入的
 比如:在 res 目录下新建 layout-sw600dp 文件夹, 代表600dp以上的设备会加载该文件夹下的文件

 技术分享

探究碎片(三)

标签:

原文地址:http://my.oschina.net/u/1995545/blog/393454

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!