首页 » Android程序设计:第2版 » Android程序设计:第2版全文在线阅读

《Android程序设计:第2版》第7章 Fragment和跨平台支持

关灯直达底部

现在,我们已经编写了一些Android代码,了解到了Activity类、View类及View类的layout和widget子类是Android中最重要的类。通常情况下,Android用户接口是使用布局中的widget视图构建的,例如LinearLayout的ListView。当启动Activity时,会从资源加载单层次的视图对象(或者是通过代码创建)。该视图对象会被初始化并在设备屏幕上显示。

对于较小的屏幕,这种方式工作良好。用户在不同屏幕之间移动以访问应用程序UI的不同部分,Activity类(Android的任务概念)支持备用栈,它支持通过严格的树结构接口的快速、直观的遍历。但是,当UI是在更大的平板屏幕上显示时,情况就会大大不同。屏幕的有些部分在较长的时间内都会保持不变;有些部分决定其他部分的显示内容。像一张卡片那样的显示就不太适合这种大屏幕了。

通过显示和隐藏一些视图,简单地实现一个支持屏幕上某些内容根据另一部分的activity变化而变化是完全有可能的。然而,Android的开发人员认为他们除了鼓励创建出在传统的大屏幕上也具有良好的一致性和体验的用户界面之外,还可以做更多的事情。为了支持这种新型互动,他们基于Fragment类引入了一个新的功能,该功能已经成为Android 3.0 SDK(API 11,Honeycomb)的一部分。

Fragment对象介于View和Activity之间。和View一样,可以把Fragment对象加入ViewGroup或者作为布局的一部分。然而,它不是View的子类,其只能通过FragmentTransaction添加到ViewGroup中。和Activity一样,Fragment也有生命周期,并实现了接口ComponentCallbacks和接口View.OnCreateContextMenuListener。但是,和Activity不同的是,Fragment不是Context,其生命周期取决于其所属的Activity的生命周期。

Fragment是Android API的一个很大的变动。为了简化向新API的过渡,Google提供了兼容库,最早可以支持到1.6版本(API 4,Donut)的SDK。我们将在后面探讨后期的兼容性。现在先来了解下其本地环境蜂巢的fragment,在Android 3.0及后续版本中运行。