Android零基础入门第84节:引入Fragment原来是这么回事

   随着大众生活水平的提高,再加上移动互联网的迅速发展,几乎每个人都至少拥有一台搭载Android系统的移动设备。Android设备的多样性给我们带来了很大的便捷,各Android设备拥有不同分辨率和不同屏幕大小,特别是平板电脑和手机间的差别巨大,使得同样的界面在不同的设备上显示出不同的效果。为了能够同时兼顾到手机和平板电脑的开发,自Android 3.0版本开始引入了碎片的概念,也就是Fragment。

    Fragment作为Android最基本、最重要的基础概念之一,在开发中经常会用到,本章我们一起来学习 Fragment的使用。

一、Fragment概述

    Fragment 是一种可以嵌人在Activity中的UI片段,它能让程序更加合理地利用大屏幕空间,因而Fragment在平板上应用非常广泛。Fragment与Activity十分相似,它包含布局,同时也具有自己的生命周期。

    一个Fragment代表着Activity中一种行为或者Activity用户界面中的一部分。我们可以将多个Fragment组合在一个Activity中,组成一个多窗格布局;同样我们也可以在多个Activity中重复使用某个Fragment。我们可以将Fragment当作一个Activity中的小模块(它有它自己的生命周期,自己的事件处理机制),在Activity运行过程中,我们可以动态地添加或者移除这个模块。

    Android 3.0引入Fragment的初衷是为了适应大屏幕的平板电脑,由于平板电脑的屏幕比手机屏幕更大,因此可以容纳更多的UI组件,且这些UI组件之间存在交互关系。Fragment简化了大屏幕UI的设计,它不需要开发者管理组件包含关系的复杂变化,开发者使用Fragment对 UI组件进行分组、模块化管理,就可以更方便地在运行过程中动态更新 Activity的用户界面。

    比如说:我们的应用中有一个文章列表和文章详情页面,由于平板设备空间大,列表Fragment和详情Fragment可以放在同一个页面中,而在手持设备上,则分为两个Activity作展示。如下图:

    如上图所示的新闻浏览界面,该界面需要在屏幕左边显示新闻列表,并在屏幕右边显示新闻内容,此时就可以在Activity中显示两个并排的Fragment:左边的Fragment显示新闻列表,右边的Fragment显示新闻内容。由于每个Fragment都拥有自己的生命周期,并可响应用户输入事件,因此可以非常方便地实现:当用户单击左边列表中的指定新闻时,右边的Fragment就会显示相应的新闻内容。上图所示左边的“平板电脑”部分显示了这种UI界面。

    通过使用上面的Fragment设计机制,可以取代传统的让一个Activity显示新闻列表,另—个Activity显示新闻内容的设计。由于Fragment是可复用的组件,因此如果需要在正常尺寸的手机屏幕上运行该应用,则可以改为使用两个 Activity: Activity A 包含 Fragment A、Activity B 包含 FragmentB。其中 ActivityA仅包含显示文章列表的Fragment A,而当用户选择一篇文章时,它会启动包含新闻内容的Activity B,如上图所示右边的手机部分。

二、Fragment优势

    从上面的例子知道,Fragment在开发中非常重要。概括起来,使用Fragment有以下一些好处:

  1. Fragment可以将Activity分离成多个可重用的组件,每个都有它自己的生命周期和UI。

  2. Fragment可以轻松创建动态灵活的UI设计,可以适应于不同的屏幕尺寸。

  3. Fragment是一个独立的模块,紧紧地与Activity绑定在一起。可以运行中动态地移除、加入、交换等。

  4. Fragment提供一个新的方式让我们在不同的安卓设备上统一UI。

  5. Fragment 可以解决Activity间的切换不流畅,轻量切换问题。

  6. Fragment 可以替代TabActivity做导航,性能更好。

  7. Fragment 在4.2.版本中新增了嵌套Fragmeng的使用方法,能够生成更好的界面效果。

  8. Fragment做局部内容更新更方便,原来为了达到这一点要把多个布局放到一个Activity里面,现在可以用多Fragment来代替,只有在需要的时候才加载Fragment,大大提高了性能。

三、Fragment使用

    与创建Activity类似,要创建一个Fragment必须创建一个类继承自Fragment。

    很多时候我们都是直接重写Fragment,其实Fragment类是一个基类,还有几个派生子类,Fragment的继承关系如下图所示。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值