零、前言

静态用户界面挤在小屏幕上的移动应用的日子已经一去不复返了。今天的用户期望移动应用程序是动态的和高度互动的。他们希望一款应用在他们的中分辨率智能手机上看起来很棒,在他们的高分辨率平板电脑上使用时也一样棒。应用程序需要提供丰富的导航功能、适应性和响应能力。

试图使用安卓传统的以活动为中心的用户界面设计模型来满足这些需求充其量是困难的。作为开发人员,我们需要比活动更多的控制。我们需要一种新的方法,片段给了我们这种新的方法。

在本书中,您将学习如何使用片段来应对在现代移动应用程序开发世界中创建动态 ui 的挑战。

这本书涵盖了什么

第一章片段和 UI 模块化,介绍了片段、UI 模块化,以及片段在开发模块化 UI 中的作用。本章演示创建简单的片段和在活动中静态使用片段。

第 2 章片段和 UI 灵活性,建立在前一章介绍的概念基础上,为设备布局的特定差异提供解决方案。本章介绍了如何使用自适应活动布局定义来支持多种设备外形规格,其中包含一小组根据当前设备的用户界面要求自动重新排列的片段。

第 3 章片段生命周期和专门化,讨论了片段生命周期与活动生命周期的关系,并演示了生命周期各点的适当编程动作。利用这些知识,引入了特殊目的片段类ListFragmentDialogFragment,以演示它们的行为,并更深入地了解它们在活动生命周期中的行为与标准片段的行为有何不同。

第 4 章使用片段事务解释了如何通过使用片段事务动态添加和移除片段,在单个活动中创建多个应用程序屏幕。涵盖的主题包括线程处理、实现后退按钮行为,以及根据设备特性的差异动态调整多重分段用户界面。

第 5 章打造丰富导航,在前面章节的基础上,将一切汇集在一起,展示如何通过丰富的导航功能,利用片段来提升用户体验。本章演示了如何实现许多导航功能,包括使用基于滑动的分页进行屏幕浏览、使用下拉列表导航进行直接屏幕访问以及使用选项卡进行随机屏幕查看。

第 6 章片段与材质设计,介绍了使用材质设计的下一代应用开发。本章演示了如何使用安卓材质设计功能的最新特性来实现包含丰富视觉外观和动画过渡的片段。

这本书你需要什么

要学习本书中的示例,您应该具备安卓编程的基本知识和运行良好的安卓开发环境。

这本书主要关注 Android Studio 和安卓开发环境;但是,也可以使用其他工具,如带有 ADT 插件的 Eclipse、JetBrains 的 IntelliJ IDEA IDE 或类似的支持 Android 的开发工具。

这本书是给谁的

这本书是为任何对安卓编程有基本了解的人准备的,他们希望改善他们的应用程序的外观和可用性。

无论您是希望创建更具交互性的用户体验,创建更具动态适应性的 UI,在单个应用程序中为平板电脑和智能手机提供更好的支持,降低管理应用程序 UI 的复杂性,还是只是想扩展您的 UI 设计理念,这本书都是为您准备的。

惯例

在这本书里,你会发现许多区分不同种类信息的文本样式。以下是这些风格的一些例子和对它们的意义的解释。

文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、伪 URL、用户输入和 Twitter 句柄如下所示:“为了给图书列表创建一个片段,我们将定义一个名为fragment_book_list.xml的新布局资源文件。”

代码块设置如下:

public class BookListFragment extends Fragment
  implements RadioGroup.OnCheckedChangeListener {
  @Override
  public void onCheckedChanged(RadioGroup radioGroup, int id) {
  }
  // Other members elided for clarity
}

当我们希望将您的注意力吸引到代码块的特定部分时,相关的行或项目以粗体显示:

public class BookListFragment extends Fragment
  implements RadioGroup.OnCheckedChangeListener {
  @Override
  public void onCheckedChanged(RadioGroup radioGroup, int id) {
  }
  // Other members elided for clarity
}

新名词重要词语以粗体显示。您在屏幕上看到的单词,例如菜单或对话框中的单词,出现在如下文本中:“在 Android Studio 中,我们通过在新资源文件对话框中选择屏幕高度来将资源文件与该限定符相关联。”

警告或重要提示会出现在这样的框中。

类型

提示和技巧是这样出现的。

读者反馈

我们随时欢迎读者的反馈。让我们知道你对这本书的看法——你喜欢或不喜欢什么。读者反馈对我们来说很重要,因为它有助于我们开发出你真正能从中获益的标题。

要给我们发送一般反馈,只需发送电子邮件<[feedback@packtpub.com](mailto:feedback@packtpub.com)>,并在您的邮件主题中提及书名。

如果你对某个主题有专业知识,并且对写作或投稿感兴趣,请参见我们位于www.packtpub.com/authors的作者指南。

客户支持

现在,您已经自豪地拥有了一本书,我们有许多东西可以帮助您从购买中获得最大收益。

下载示例代码

你可以从你在http://www.packtpub.com的账户下载这本书的示例代码文件。如果您在其他地方购买了这本书,您可以访问http://www.packtpub.com/support并注册,以便将文件直接通过电子邮件发送给您。

您可以按照以下步骤下载代码文件:

  1. 使用您的电子邮件地址和密码登录或注册我们的网站。
  2. 将鼠标指针悬停在顶部的 SUPPORT 选项卡上。
  3. 点击代码下载&勘误表
  4. 搜索框中输入图书名称。
  5. 选择要下载代码文件的书籍。
  6. 从您购买这本书的下拉菜单中选择。
  7. 点击代码下载

下载文件后,请确保使用最新版本的解压缩文件夹:

  • 视窗系统的 WinRAR / 7-Zip
  • zipeg/izp/un ARX for MAC
  • 适用于 Linux 的 7-Zip / PeaZip

下载本书的彩色图片

我们还为您提供了一个 PDF 文件,其中包含本书中使用的截图/图表的彩色图像。彩色图像将帮助您更好地理解输出中的变化。您可以从http://www . pack pub . com/sites/default/files/downloads/creating dynamicuiwithdroidfragments second edition _ color images . pdf下载此文件。

勘误表

尽管我们尽了最大努力来确保我们内容的准确性,但错误还是会发生。如果你在我们的某本书里发现了错误——可能是文本或代码中的错误——如果你能向我们报告,我们将不胜感激。通过这样做,你可以让其他读者免受挫折,并帮助我们改进这本书的后续版本。如果您发现任何勘误表,请访问http://www.packtpub.com/submit-errata,选择您的书籍,点击勘误表提交表链接,并输入您的勘误表的详细信息。一旦您的勘误表得到验证,您的提交将被接受,勘误表将上传到我们的网站或添加到该标题勘误表部分下的任何现有勘误表列表中。

要查看之前提交的勘误表,请前往https://www.packtpub.com/books/content/support并在搜索栏中输入图书名称。所需信息将出现在勘误表部分。

盗版

互联网上版权材质的盗版是所有媒体的一个持续问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上遇到任何形式的我们作品的非法拷贝,请立即向我们提供位置地址或网站名称,以便我们寻求补救。

请通过<[copyright@packtpub.com](mailto:copyright@packtpub.com)>联系我们,获取疑似盗版资料的链接。

我们感谢您在保护我们的作者方面的帮助,以及我们为您带来有价值内容的能力。

问题

如果您对本书的任何方面有问题,可以在<[questions@packtpub.com](mailto:questions@packtpub.com)>联系我们,我们将尽最大努力解决问题。