学习Android开发7:Fragment

Fragment 是activity的界面中的一部分或一种行为。你可以把多个Fragment们组合到一个activity中来创建一个多面界面并且你可以在多个activity中重用一个Fragment。你可以把Fragment认为模块化的一段activity,它具有自己的生命周期,接收它自己的事件,并可以在activity运行时被添加或删除。

自从Android 3.0( 11 )中引入fragments 的概念,其目的是为了解决不同屏幕分辩率的动态和灵活UI设计。fragments 的设计不需要你来亲自管理view hierarchy 的复杂变化,通过将Activity 的布局分散到frament 中。

Fragment不能独立存在,它必须嵌入到activity中,而且Fragment的生命周期直接受所在的activity的影响。

为了向下兼容可以用Android Support Library。

关于Fragment:

  • Fragment有自己的布局并且有自己的生命周期(回调函数)
  • 你可以在activity运行时往上添加或移除Fragments
  • 你可以在一个activity上组合使用多个Fragments
  • 一个Fragments可以被用在多个activity上
  • Fragment的生命周期受所在的activity的影响;如果activity暂停了,它里面的所有Fragment也会停止
  • Fragment可以不依赖用户接口实现
  • Fragments在android API 版本 11 中引入

Fragment通过继承Fragment类实现,创建Fragment之后,你可以通过在activity的布局文件中添加<fragment>标签插入。

在Fragment还没有引入之前,我们受到了很多限制-只能在同一时间在屏幕上显示一个activity。我们不能分割屏幕、不能单独控制不同屏幕区域。引入Fragment之后,前面的限制也就不存在了,它提供了更大的灵活性。

下图是使用fragment的典型设计:

学习Android开发7:Fragment

当应用运行在平板电脑上时,Activity A中嵌入了两个fragment。当运行在手机上时,由于屏幕空间不足,Activity A只包含一个fragment,当选择某一项之后启动Activity B,它也只包含一个fragment。

Fragment的生命周期

Fragment有自己的生命周期,和activity相似。

学习Android开发7:Fragment

你可以实现的方法:

  • onAttach():fragment实例和activity示例相关联,fragment和activity没有完全初始化完成。
  • onCreate():当创建fragment时,系统回调这个方法。
  • onCreateView():当fragment开始绘制用户界面时回调这个函数一次。为了绘制UI你需要返回一个View对象,这是fragment布局的root。如果fragment不提供UI可以返回null。
  • onActivityCreated():当所在activity创建时调用。Activity和fragment已创建完成。
  • onStart():当fragment可见时调用一次
  • onResume():Fragment激活
  • onPause():用户离开fragment
  • onStop():Fragment停止
  • onDestroyView()
  • onDestroy()

使用Fragment的步骤:

  • 首先决定在一个activity上要使用多少个fragment;例如使用两个fragment处理设备的横竖屏。
  • 为每一个fragment创建类,继承自Fragment类;实现上面提到的方法,并不需要实现全部函数,根据需求来。
  • 为每一个fragment创建xml布局文件,这个文件定义了fragment的布局。
  • activity 根据逻辑添加删除 fragment

Fragment的使用示例

  • Single frame fragment
  • List fragment
  • fragment transaction

Single frame fragment例子

Single frame fragment是为小屏设备设计的;注意Fragment只支持android 3.0及以上设备。

下面我们来创建两个Fragment,一个在横屏模式时使用,一个在竖屏模式时使用。

使用Android Studio创建一个空项目,参考: Hello World

创建两个文件 Fragment_S.java(竖屏) 和 Fragment_H.java(横屏);

Fragment_S.java:

Fragment_H.java:

为上面两个Fragment创建对应的xml布局文件:

fragment_h.xml:

fragment_s.xml:

strings.xml,添加几个字符串:

MainActivity.java:

运行:

学习Android开发7:Fragment

横屏:

学习Android开发7:Fragment

List Fragment例子

首先创建一个空项目:Hello World

创建list_fragment.xml文件:

修改strings.xml:

创建MyListFragment.java文件:

在activity_main.xml文件添加创建的MyListFragment:

编译运行:

 

学习Android开发7:Fragment

Fragment动画切换

Google 在 android 4.4 引用了transition框架,它提供了方便的API 实现不同UI之间的过度动画。这个框架使用两个核心概念,“场景”和“过渡”。“场景”定义了应用UI的状态,“过渡”定义两个场景间的动画。

首先创建一个空项目:Hello World

未完

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注