[转载]
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,墙纸。
类Favorites(LauncherSettings.java)和类LauncherProvider定义了一个content provider,用来存储桌面上可以放置的几个对象,包括shortcut, search和clock等。
类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。
来自:http://blog.sina.com.cn/s/blog_5e71b14f0100hx38.html
- 大小: 40.6 KB
分享到:
相关推荐
### Android 2.3 Launcher分析之桌面组件与默认配置 #### 概述 本文将深入探讨Android 2.3版本中的Launcher系统,并重点分析LiveFolder的功能及其如何与Launcher交互,以及Launcher默认界面配置的方式和方法。 ##...
### Android 2.3 Launcher分析 #### 架构概述 Android 2.3 版本中的Launcher采用的是经典的MVC(Model-View-Controller)架构模式。这种模式将应用程序分为三个核心部分:模型(Model)、视图(View)以及控制器...
【Android 2.3 Launcher 分析】 Android 2.3 的 Launcher 是用户界面的核心部分,它作为设备的主要入口,提供用户访问应用程序、小部件和设置的界面。在深入分析之前,我们先了解一下 Launcher 的基本架构。 **...
Android Launcher 分析 Android Launcher 是 Android 系统中的一种应用程序启动器,负责管理和显示应用程序的图标和信息。本文将对 Android Launcher 的架构和实现进行分析,主要包括 Launcher 的主要文件和类、...
android2.3 launcher分析一
### Android Launcher 分析 #### 一、Launcher启动过程解析 Android Launcher 的启动流程是一个非常重要的概念,对于理解Android系统的启动机制以及如何定制自己的Launcher应用有着关键的作用。 **1.1 Linux ...
本篇文章将深入分析Android 2.1版本的Launcher2,并探讨其核心组件和功能。 1. **Launcher.java**: 这是Launcher的主要Activity,负责整个启动器的生命周期管理和界面呈现。它初始化并管理其他关键组件,如...
本篇文章将深入分析Android 2.1版本的Launcher2,并探讨其核心组件和功能。 1. **Launcher.java**: 这是Launcher的主要Activity,负责整个启动器的生命周期管理和界面布局。它初始化并管理其他关键组件,如...
总结来说,Android 4.0 Launcher的分析涵盖了Android应用基础、UI设计、系统服务、组件交互等多个方面。理解这些知识点是深入探究Android系统和开发自定义Launcher的基础。通过对Launcher的解析,开发者不仅可以提升...
基于原生launcher做定制,做了3个项目了,这里有些经验与大家分享一下,顺便混点分。里边的大部分内容是通用的具有参考价值,小部分内容是我所涉及的项目特定的。
在安卓系统中,Launcher是用户接触最频繁的组件之一,它是设备主屏幕,包含了应用快捷方式、小部件等元素,并支持横向滑动切换分页。本压缩包中的"TestPagedView"文件很可能是实现这一功能的一个示例或实验性的源...
在本文中,我们将深入分析`launcher`源码,特别是`Launcher3`项目,来理解其工作原理和设计思路。 首先,我们来看`Launcher3`的主要组件。`Launcher3`是Android开源项目中的一个版本,它主要由以下几个关键部分构成...
Launcher3分析之拖动图标的流程——按下 Launcher3分析之拖动图标的流程——移动 Launcher3分析之拖动图标的流程——放下 PagedView的原理 – 滑动 如何给Launcher3添加左屏 IconCache原理 找个Launcher开发 ...
《Launcher2源码分析》 在Android系统中,Launcher作为用户与系统交互的起点,扮演着至关重要的角色。本文将深入探讨Android 4.0版本的Launcher2源码,主要涉及桌面快捷图标的拖拽机制、Workspace切换到AllApps流程...
Android Launcher源码全面分析涉及了Android桌面启动器(Launcher)的核心功能实现,包括界面配置、图标及壁纸调整、启动和初始化流程、以及一些高级特性如HotSeat和页面滑动处理等。接下来将根据给出的信息点,详细...
**Android Launcher2 文件夹功能分析** 在Android操作系统中,Launcher是用户界面的核心组成部分,它扮演着桌面的角色,允许用户启动应用程序、创建快捷方式以及管理主屏幕上的图标布局。`Launcher2`是Android早期...
Android-launcher源码全面分析 一 Launcher默认界面配置(default workspace) 2 1 界面默认配置文件 2 2 LauncherProvider java的loadFavorites分析 3 二 Icon修改 界面布局调整 壁纸设置 5 1 图标大小和标题大小 5...