Android系统的桌面

   Launcher更重要的意义在于它是一个桌面。就像一般PC机的桌面一样,在Android的桌面上,你可以放置经常使用的应用程序快捷方式,也可以将相同类型的快捷方式合并为一个文件夹以便管理;你可以放置一些桌面小部件,让你的桌面变得更炫更便利,也可以通过Launcher更换壁纸,使你的桌面更加个性化。

  既然Launcher有如此重要的功能,下面我们就开始学习Launcher的实现。

  1.1 总体结构

  我们在讲解Launcher的时候经常会用到“组件”这个词。Launcher组件主要有以下3种。

  基于Android应用程序框架来说,组件范围比较广,也就是我们常说的Android应用程序的四大组件。

  从Launcher的UI角度来看,组件包括桌面(Workspace)、应用程序菜单(Allapps)、快捷启动栏(Hotseat)、搜索和页面指示条、快捷菜单等。我们称这类组件为UI组件。为了让大家对Launcher有一个比较直观的了解,我们针对Launcher的不同状态分别给出了相应的UI组件图。如图1-1到图1-3所示。

  

  图1-1 初始状态的Launcher

  

  图1-2 应用程序菜单(AllApps)

  

  图1-3 预览模式

  从Launcher桌面元素的角度来说,组件包括应用程序的快捷方式1及相关视图实现、文件夹及相关视图实现、桌面小部件及相关组件,我们称这类组件为桌面组件。它们的表现形式如图1-4所示。

  

  图1-4 Launcher的桌面组件实例

  以上3种组件是本书的重点剖析对象,我们将介绍一些Launcher中值得学习的经验以及一些好的编程习惯,还将讲解Launcher相关的动画效果(比如页面切换、模式切换、应用程序启动及退出效果、桌面组件的添加动画以及打开或关闭文件的过程动画等)、定制化的UI组件效果(比如点击时候的外发光效果、拖放桌面组件过程中的效果、搜索及拖放条的状态切换动画效果,以及快捷方式的投放效果等)以及一些相关应用程序的配置等,希望这些内容和经验能应用于你的开发工作中。

  本书主要讨论的Launcher3是Launcher2的进化版本,在Android原生的设备中,从Android 4.4开始就将Launcher3作为桌面提供给设备使用者。相对于Launcher2,Launcher3进行了以下重要改动。

  桌面页面动态管理。在Launcher3中,桌面页的数量不再是一成不变的,它可以随着软件的使用而有所增减。

  桌面的页面提供了客户定制化页面。在Launcher3中,设备厂商可以通过该特性来个性化桌面。

  桌面导航的更新,在这一点上,桌面的页面导航不再是单调的一条横线,而是页面指示更强的点导航。

  1.2 Launcher3的交叉编译

  想要了解一个软件,没有什么比让软件跑起来看看实际效果更好的途径了。因此,我们需要了解在交叉编译环境下如何编译Launcher3。这里我们在Ubuntu 14.10 64位的环境下进行分析,当然在此之前你需要按照Android官方网站的说明对编译环境做正确的配置,并且下载Android源代码,这些步骤我们就不在这里赘述了。

  Launcher3位于Android源码的code_root\packages\apps\Launcher3下。这里的“code_root”是指你下载源代码的根目录。它的目录结构如图1-5所示。

  

  图1-5 目录结构

  以下是各个文件夹的内容及作用。

  1. protos

  这是一个使用protocol buffer描述的数据结构文件,文件名叫backup.proto。在这里描述了一些数据结构,它们用于Launcher的备份功能。关于这个文件以及相关编译我们稍后将会介绍。

  2. res

  这里保存了Launcher3所需要的资源文件,包括字符串资源、动画配置资源、尺寸以及相关标志资源、布局资源等。对于Launcher3来说,这个文件夹是至关重要的。

  3. src

  src文件夹中保存的是Launcher3的代码文件,这是Launcher3的核心部分。

  4. tests

  这是针对Launcher3的测试工程目录。对于很多应用程序来说,这个可能并不那么重要。但是如果都能提供这样的工程,软件质量将会有很大的提高。

  5. util

  util文件夹内存放的是protocol buffer的调试工具,包含了一个工具类、编译脚本以及该工具的清单文件。

  6. WallpaperPicker

  这是选择壁纸的应用程序。在Launcher2中,它只是Launcher的一部分,而在Launcher3中,它开始作为独立的应用程序出现。但是在完成编译的时候,它会作为一个Activity容纳到Launcher3中。

  7. AndroidManifest.xml

  这是Launcher3的清单文件,它记录了Launcher3的应用程序组件信息、声明的应用程序权限、使用到的权限以及应用程序配置信息等。这个文件非常关键。

  8. Android.mk

  这是Launcher3的编译脚本,是每一个需要通过交叉编译环境编译的应用程序都需要提供的文件。在这里记录了应用程序依赖的库、模块名称、源代码和资源文件路径以及编译属性等重要信息。它也是本节的主要内容。

  9. CleanSpec.mk

  这是Launcher3编译结果的清理脚本,当你使用make clean命令清理的时候,实际上执行的是这个脚本的内容。

  10. proguard.flags

  这是Launcher3的混淆脚本。为了保证代码安全,需要隐藏一些方法或者变量的名称,有一些方法在混淆过程中需要保留,这些东西都会记录在这个文件中。使用方法将会在讲解Android.mk文件的时候进行解释。

  以上就是Launcher3需要我们关注的文件夹的内容及相关作用,了解这些知识有助于更好地理解接下来要讲解的Android.mk文件的内容。接下来我们进入主题,讲解Launcher3的主体编译部分。

转载于:https://my.oschina.net/123w1234/blog/709621

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值