零、前言

欢迎来到安卓设计模式和最佳实践,这是一个关于如何利用久经考验的编程哲学、设计模式充分利用你的应用的综合指南。这些模式为解决程序员面临的许多开发问题提供了一种合理而优雅的方法。这些模式充当了一个向导,创建了一条从问题到解决方案的清晰路径,尽管应用设计模式本身并不能保证最佳实践,但它将极大地帮助这个过程,并使发现设计缺陷变得容易得多。设计模式可以在很多平台上实现,也可以用很多编程语言编写。一些代码库甚至将模式作为其内部机制的一部分,许多读者已经熟悉了 Java Observer 和 observatory 类。我们将要探索的 Android SDK 大量使用了许多模式,例如工厂、构建者和侦听器(它们实际上只是观察者模式)。虽然我们将涵盖这些内置的设计模式,但这本书将主要探索我们如何构建自己的定制模式,并将其应用于安卓开发。这本书不是从开发人员的角度来探讨每个设计模式,而是从应用开发的各个方面来探讨单个设计模式,因为它们会在构建安卓应用的过程中出现。为了阐明这一旅程,我们将专注于一个想象中的应用,旨在支持一个小企业。这将带我们从应用构思到发布,一路上涵盖诸如用户界面设计、内部逻辑和用户交互等主题。在每一个步骤中,我们将探索那些与该过程相关的设计模式,首先探索抽象形式的模式,然后将其应用于特定的情况。到这本书的最后,你将学会如何将设计模式应用到安卓开发的各个方面,以及如何使用它们来辅助最佳实践。设计模式的概念比任何特定的模式本身都更重要。模式可以并且应该被调整以适合我们的特定目的,通过学习这种处理应用开发的方式,我们甚至可以继续创建我们自己的完全原创的模式。

这本书涵盖了什么

第 1 章设计模式,介绍了开发环境,以及两种常见的设计模式,工厂和抽象工厂。

第二章创造模式,涵盖材质和界面设计,探索设计支持库和构建者设计模式。

第三章材质模式,介绍安卓用户界面和一些最重要的材质设计组件,如 app bar 和滑动导航抽屉。这将介绍菜单和动作图标,以及如何实现它们,以及如何使用抽屉监听器来检测用户活动。

第 4 章布局模式在前一章的基础上,进一步探讨了安卓布局设计模式,以及如何利用重力和重量来创建适用于各种设备的布局。这将带我们了解安卓如何处理设备方向、屏幕大小和形状差异。介绍并论证了战略模式。

第 5 章结构模式,让我们更深入地研究设计库,并创建一个由具有回收视图的协调器布局控制的布局。这需要探索适配器设计模式,首先是内部版本,然后我们构建自己的版本,以及桥接模式、外观和过滤器模式。

第 6 章激活模式,向我们展示了如何将模式直接应用到我们的 app 中。我们涵盖了更多设计库功能,如折叠工具栏、滚动和分隔线。我们创建了一个自定义对话框,由用户活动触发。我们重新审视工厂模式,并展示如何使用构建器模式来扩展用户界面。

第 7 章组合模式,介绍并演示了原型和装饰器两种新的结构模式,涵盖了它们的灵活性。然后,当我们使用模式来控制由不同的复合按钮(如开关和单选按钮组)组成的用户界面时,这将被付诸实践。

第八章组合模式,集中讲述了组合模式以及如何在多种情况下使用以及如何选择合适的情况。然后,我们继续在实际演示中使用它来膨胀嵌套的用户界面。这导致了持久数据的存储和检索,使用内部存储、应用文件,并最终以共享首选项的形式使用用户设置。

第 9 章观察模式,着眼于从一个活动到另一个活动的转换所涉及的视觉过程,以及这如何远不止是装饰。读者将学习如何应用过渡和共享元素,以有效利用移动设备的最小屏幕空间,并简化应用的使用和操作。

第十章行为模式,集中介绍主要的行为模式、模板、策略、访客和状态。它提供了每个的工作演示,并涵盖了它们的灵活性和使用。

第 11 章可穿戴模式,展示了安卓穿戴、电视和汽车的工作方式,依次演示了如何设置和配置。我们研究了这些和标准手持应用之间的差异。

第 12 章社交模式,展示如何添加网页功能和社交媒体。首先,我们探索了网络视图,以及如何使用它来创建内部网络应用。接下来,我们将探索如何将我们的应用连接到脸书,展示如何做到这一点,以及我们可以用它做什么。这一章最后考察了其他社交平台,比如推特。

第 13 章发布模式,涵盖安卓应用的部署、发布和货币化。读者被引导通过注册和发布过程,我们看一看广告选项,以及哪些最适合哪个目的。最后,我们看看如何通过一些部署技巧和窍门来最大化潜在用户。

这本书你需要什么

安卓工作室和软件开发工具包都是开源的,可以从一个包中安装。除了一个小的例外,这是本书所需的所有软件,在相关章节中有详细的描述。

这本书是给谁的

本书面向有一些基本安卓开发经验的安卓开发者。要充分利用这本书,必须掌握基本的 Java 编程知识。

惯例

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

文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、伪 URL、用户输入和 Twitter 句柄如下所示:“在布局中添加三个 TextViews,然后将代码添加到 MainActivity 的onCreate()方法中。”

代码块设置如下:

Sequence prime = (Sequence) SequenceCache.getSequence("1");
primeText.setText(new StringBuilder()
        .append(getString(R.string.prime_text))
        .append(prime.getResult())
        .toString());

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

    @Override
    public String getDescription() {
        return filling.getDescription() + " Double portion";
    }

任何命令行输入或输出都编写如下:

/gradlew clean:

新名词重要词语以粗体显示。您在屏幕上看到的单词,例如,在菜单或对话框中,出现在如下文本中:“在手机上启用开发人员选项。在某些型号上,这可能涉及导航到设置 | 关于电话

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

类型

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

读者反馈

我们随时欢迎读者的反馈。让我们知道你对这本书的看法——你喜欢或不喜欢什么。读者反馈对我们来说很重要,因为它有助于我们开发出你真正能从中获益的标题。要向我们发送一般反馈,只需给 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

这本书的代码包也托管在 GitHub 上,网址为。我们还有来自丰富的图书和视频目录的其他代码包,可在https://github.com/PacktPublishing/获得。看看他们!

下载本书的彩色图片

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

勘误表

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

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

盗版

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

请联系我们在 copyright@packtpub.com 的链接到可疑的盗版材质。

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

问题

如果你对这本书的任何方面有问题,你可以联系我们在 questions@packtpub.com,我们将尽最大努力解决这个问题。