`

android launcher总体分析

阅读更多
本博文主要参考网络资料,希望对各位正在修改launcher的有帮助:
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。
  • 大小: 45.9 KB
分享到:
评论
1 楼 huangbo_2020 2012-02-11  
很不错的总结文档·学习··共同研究launcher··多交流哈··谢谢你的文档··

相关推荐

    Androidlauncher开发.pdf

    Android_launcher 开发概述 Android_launcher 是 Android 系统中的一個重要组件,负责管理用户的桌面环境。作为一个 GUI,它不仅需要提供对所有应用程序的映射,还需要具备良好的交互性和美观的界面设计。在 ...

    android launcher3源码 循环翻页

    《深入解析Android Launcher3源码:循环翻页机制》 Android Launcher3是Android系统的核心组件之一,它是用户与系统交互的门户,承担着应用程序启动、桌面布局管理等关键任务。本篇文章将深入探讨Launcher3的源码,...

    androidlauncher应用开发完整清晰版

    ### Android Launcher 应用开发知识点概述 #### 一、Launcher应用简介 Launcher是Android系统中的一个关键组件,它为用户提供了一个直观的操作界面,用于启动应用、管理应用图标、快捷方式等。简而言之,Launcher...

    android Launcher源码详解

    本文将对 Launcher 的源码进行深入分析,探讨其运行机制和设计思想。 一、Launcher 的整体结构 Launcher 的整体结构可以通过查看 Launcher.xml 布局文件和使用 hierarchyviewer 布局查看工具来了解。从 hierarchy...

    android Launcher2.2源码

    1. **Launcher结构分析** Launcher由多个关键组件构成,包括Activity、Service、BroadcastReceiver以及ContentProvider。其中,主Activity是整个应用的核心,它负责加载并显示桌面图标和应用抽屉。源码中的`...

    Android Launcher3源码

    通过分析`Launcher3`的源码,我们可以深入理解Android系统桌面的工作原理,了解如何定制自己的启动器。 1. **项目结构** `Launcher3`源码结构分为几个主要部分:UI组件、数据模型、后台服务、偏好设置和资源文件。...

    安卓Android源码——安卓Android Launcher 桌面分页滑动代码.rar

    下面,我们将深入探讨Android Launcher桌面分页滑动的相关知识点。 1. **Android UI框架**:在Android中,用户界面主要由View和 ViewGroup 组成。View是基本的UI元素,如按钮、文本框等,而ViewGroup则是布局容器,...

    android手把手教你开发launcher.pdf

    Android Launcher 开发指南 Android Launcher 是 Android 操作系统中的桌面应用程序,负责管理桌面图标、widget 和其他桌面元素。下面我们将一步步指导您如何开发一个自己的 Launcher,並使其替代系统的默认 ...

    安卓Android源码——Android Launcher 源码修改可编译.zip

    "安卓Android源码——Android Launcher 源码修改可编译.zip" 这个标题表明我们关注的是Android操作系统的源代码,特别是与启动器(Launcher)相关的部分。Launcher是用户与Android系统交互的主要界面,它管理应用...

    android Launcher2文件夾功能分析

    **Android Launcher2 文件夹功能分析** 在Android操作系统中,Launcher是用户界面的核心组成部分,它扮演着桌面的角色,允许用户启动应用程序、创建快捷方式以及管理主屏幕上的图标布局。`Launcher2`是Android早期...

    android launcher2源码

    源码分析可以帮助我们理解Android系统的启动过程、应用程序的管理方式以及UI布局和交互逻辑。 1. **启动流程**: 当设备启动时,Launcher2作为系统的一部分被加载。源码中`com.android.launcher2.Launcher`类是...

    android2.3 launcher分析

    ### Android 2.3 Launcher分析 #### 架构概述 Android 2.3 版本中的Launcher采用的是经典的MVC(Model-View-Controller)架构模式。这种模式将应用程序分为三个核心部分:模型(Model)、视图(View)以及控制器...

    android Launcher添加widget源码

    通过分析JYCLauncher的源码,我们可以深入了解Android自定义Launcher中添加Widget的细节,以及如何实现动态添加功能。这不仅可以帮助开发者理解Android系统的内部工作原理,还能为开发具有独特特性的Launcher应用...

    Android高级应用源码-Android Launcher 源码修改可编译.zip

    《深入解析Android Launcher源码:实现可编译的高级应用》 在移动操作系统的世界中,Android以其开源性和灵活性深受开发者喜爱。本资料包提供的是一个经过修改,可编译的Android Launcher源码,旨在帮助开发者深入...

    android2.3 launcher分析三

    【Android 2.3 Launcher 分析】 Android 2.3 的 Launcher 是用户界面的核心部分,它作为设备的主要入口,提供用户访问应用程序、小部件和设置的界面。在深入分析之前,我们先了解一下 Launcher 的基本架构。 **...

    Android Launcher抽屉类SlidingDrawer的使用

    在Android系统中,Launcher是用户界面的核心组成部分,它负责展示应用程序的快捷方式和主屏幕小部件,让用户体验到个性化和便捷的操作。而SlidingDrawer组件是Android SDK提供的一种交互控件,它允许开发者在界面中...

    Android应用源码之Android Launcher 桌面分页滑动代码.zip

    这个"Android应用源码之Android Launcher 桌面分页滑动代码"压缩包,显然是为了帮助开发者深入理解Android Launcher的实现原理,特别是关于桌面分页滑动的部分。下面将详细解析这个主题。 一、Android Launcher概述...

    Android 6.0 Launcher3 增加屏幕切换动画

    在Android系统中,Launcher是用户与设备交互的主要入口,它负责显示桌面、应用程序快捷方式以及小部件。在Android 6.0(Marshmallow)版本中,开发者对Launcher3进行了重大改进,其中包括引入了新的屏幕切换动画,...

    仿Mac的dock android Launcher

    【Android Launcher】 Android Launcher是Android操作系统中的一个重要组成部分,它负责管理手机或平板电脑的主屏幕、应用快捷方式以及桌面小部件。用户通过Launcher来启动应用程序、组织桌面图标,甚至是自定义设备...

    Android Launcher 源码修改可编译.zip源码资源下载

    Android Launcher 是Android操作系统的核心组成部分,它是用户与系统交互的初始界面,负责展示应用程序图标、桌面小部件等。本文将深入探讨Android Launcher的源码结构、关键组件以及如何进行修改和编译。 首先,...

Global site tag (gtag.js) - Google Analytics