Home screen可以说是一个手机的最重要应用,就像一个门户网站的首页,直接决定了用户的第一印象。下面对home screen做一简要分析。
home screen的代码位于packages/apps/Launcher目录。从文件launcher.xml,workspace_screen.xml 可获知home screen的UI结构如下图所示:
整个homescreen是一个包含三个child view的FrameLayout(com.android.launcher.DragLayer)。
第一个child就是桌面com.android.launcher.Workspace。这个桌面又包含三个child。每个child就对应一个桌面。这就是你在Android上看到的三个桌面。每个桌面上可以放置下列对象:应用快捷方式,appwidget和folder。
第二个child是一个SlidingDrawer控件,这个控件由两个子控件组成。一个是 com.android.launcher.HandleView,就是Android桌面下方的把手,当点击这个把手时,另一个子控件,com.android.launcher.AllAppsGridView就会弹出,这个子控件列出系统中当前安装的所有类型为 category.launcher的Activity。
第三个child是com.android.launcher.DeleteZone。当用户在桌面上长按一个widget时,把手位置就会出现一个垃圾桶形状的控件,就是这个控件。
在虚拟桌面上可以摆放四种类型的对象:
1. ITEM_SHORTCUT,应用快捷方式
2. ITEM_APPWIDGET,app widget
3. ITEM_LIVE_FOLDER,文件夹
4. ITEM_WALLPAPER,墙纸。
类AddAdapter(AddAdapter.java)列出了这四个类型对象。当用户在桌面空白处长按时,下列函数序列被执行:
Launcher::onLongClick -->
Launcher::showAddDialog -->
Launcher::showDialog(DIALOG_CREATE_SHORTCUT); -->
Launcher::onCreateDialog -->
Launcher::CreateShortcut::createDialog:这个函数创建一个弹出式对话框,询问用户是要添加什么(快捷方式,appwidget, 文件夹和墙纸)其内容就来自AddAdapter。
类Favorites(LauncherSettings.java)和类LauncherProvider定义了一个content provider,用来存储桌面上可以放置的几个对象,包括shortcut, search和clock等。
类DesktopItemsLoader负责将桌面上所有的对象从content provider中提取。
线程private ApplicationsLoader mApplicationsLoader负责从包管理器中获取系统中安装的应用列表。(之后显示在AllAppsGridView上)。 ApplicationsLoader::run实现:
1)通过包管理器列出系统中所有类型为Launcher,action为MAIN的activity;
2)对每一个Activity,
a) 将Activity相关元数据信息,如title, icon, intent等缓存到appInfoCache;
b) 填充到ApplicationsAdapter 中。填充过程中用到了一些小技巧,每填充4(UI_NOTIFICATION_RATE)个activity更新一下相应view。
在Launcher::onCreate中,函数startLoaders被调用。而该函数接着调用loadApplications和 loadUserItems,分别获取系统的应用列表,以及显示在桌面上的对象列表(快捷方式,appwidget,folder等)。
Launcher上排列的所有应用图标由AllAppsGridView对象呈现。这个对象是一个GridView。其对应的Adapter是 ApplicationsAdapter,对应的model则是ApplicationInfo数组。数组内容是由ApplicationsLoader 装载的。
private class ApplicationsLoader implements Runnable。
分享到:
相关推荐
### Android Launcher ...通过以上对《androidlauncher应用开发完整清晰版》一书的内容总结,可以看出该书旨在全面深入地介绍Launcher开发的核心技术和实践经验,适合希望深入了解Android桌面开发的技术人员阅读学习。
Android Launcher 源码详解 Android Launcher 是 Android 系统中一个非常重要的组件,负责显示桌面程序和管理应用程序图标。了解 Launcher 的源码可以帮助我们更好地理解 Android 系统的设计思想和实现机制。本文...
1. **Launcher结构分析** Launcher由多个关键组件构成,包括Activity、Service、BroadcastReceiver以及ContentProvider。其中,主Activity是整个应用的核心,它负责加载并显示桌面图标和应用抽屉。源码中的`...
**Android Launcher3源码详解** Android系统的桌面启动器(Launcher)是用户与设备交互的核心界面,它负责展示应用快捷方式、小部件以及主屏幕布局。其中,`Launcher3`是Android开源项目AOSP(Android Open Source ...
1. **Android源码结构**:Android源码分为几个主要部分,如HAL(硬件抽象层)、系统服务、框架层、库和应用层。Launcher属于应用层,但与系统服务和框架层有密切关系。 2. **Launcher的工作原理**:Launcher负责...
下面,我们将深入探讨Android Launcher桌面分页滑动的相关知识点。 1. **Android UI框架**:在Android中,用户界面主要由View和 ViewGroup 组成。View是基本的UI元素,如按钮、文本框等,而ViewGroup则是布局容器,...
1. **Android Launcher结构**: - Android Launcher通常由一个主Activity构成,它继承自`AppCompatActivity`或`Activity`。 - Launcher包含多个工作区(Pages),每个工作区由一组`CellLayout`组成,`CellLayout`...
本文将深入探讨Android Launcher的源码结构、关键组件以及如何进行修改和编译。 首先,理解Android Launcher的源码结构是至关重要的。源码通常包括多个模块,如UI布局文件、Java代码、资源文件(如图片、字符串资源...
在Android系统中,Launcher是用户与设备交互的主要入口,它负责显示桌面、应用程序快捷方式以及小部件。在Android 6.0(Marshmallow)版本中,开发者对Launcher3进行了重大改进,其中包括引入了新的屏幕切换动画,...
在Android系统中,Launcher是用户界面的一个重要组成部分,它提供了应用程序的启动图标和小部件(Widgets)等元素,使得用户可以方便地访问和管理手机上的应用。本篇将深入探讨如何在自定义的Launcher中添加Widget,...
《深入解析Android Launcher源码:实现可编译的高级应用》 在移动操作系统的世界中,Android以其开源性和灵活性深受开发者喜爱。本资料包提供的是一个经过修改,可编译的Android Launcher源码,旨在帮助开发者深入...
1. **Android Launcher基本结构**: Android Launcher是由一系列组件构成的,主要分为两部分:Activity和RemoteViews。Activity负责显示桌面并处理用户交互,而RemoteViews则用于加载和展示应用程序图标及小部件。 ...
在Launcher应用的开发过程中,Android Studio不仅可以帮助开发者快速搭建项目结构,还可以利用其内置的模拟器或真实设备进行实时调试,加快开发流程,提升开发效率。 知识点九:Launcher应用的分发和安装 完成...
- **组件结构**:Launcher3由多个组件组成,包括主屏幕、应用抽屉、搜索栏等。每个组件都有其特定的功能和交互逻辑。 - **数据管理**:Launcher3通过ContentProvider与其他应用进行数据交换,获取应用信息、快捷...
1. **Launcher2 结构与组成** `Launcher2`由多个组件构成,包括服务、活动和广播接收器。主要的活动类是`HomeActivity`,它是用户交互的主要入口。服务类如`WidgetPreviewLoader`用于加载小部件预览,而`...
【Android Launcher 开发详解】 Android Launcher,作为用户与设备交互的入口,是Android系统的核心组件之一。本主题将深入探讨如何开发一个自定义的Android Launcher,以"Launcher3"为例,它是Android开源项目AOSP...
1. **Launcher2结构** `Launcher2`由多个组件构成,包括`Activity`、`Provider`和`Service`等。主要的Activity是`com.android.launcher2.Launcher`,它是整个启动器的入口点,负责加载和显示应用程序快捷方式、...
- **启动器的结构**:一个Android Launcher通常由主屏幕、应用抽屉(App Drawer)、小部件区域等部分组成,每个部分都需要定制布局和逻辑。 - **Activity和Intent过滤器**:Launcher作为一个Activity,需要配置...
1. **Android Launcher的基本结构** - Android Launcher通常是一个主Activity,继承自`android.app.Activity`,并实现了`android.view.View.OnLongClickListener`和`android.view.View.OnClickListener`接口,以便...
1. **阅读源码结构**:首先,查看`likeios.apk`,这很可能是经过修改的Android 4.0 Launcher的APK文件。通过反编译工具(如Apktool或 JADX)解包APK,获取Java源码和资源文件。 2. **理解Activity**:找到`Launcher...