`

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
分享到:
评论

相关推荐

    android2.3 launcher分析三

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

    Launcher_for_ipad

    #### 三、Launcher总体架构分析 - **重要性**: Homescreen作为手机的重要应用之一,直接影响用户的体验和第一印象。 - **位置**: Homescreen的代码位于`packages/apps/Launcher`目录。 - **UI结构**: - **...

    风喵加速器.apk 分析报告1

    总体来说,风喵加速器的应用分析报告揭示了其基础架构、网络连接以及可能的数据传输路径。然而,为了全面评估该应用的安全性和性能,还需要更深入的技术分析,包括代码审计、网络流量监控、隐私政策审查等。同时,...

    Activity_boot_process_analysis

    但总体来看,Activity的启动流程是Android系统框架层极为重要的部分,确保用户界面能够快速响应用户输入,并在后台进程创建与管理中发挥着关键作用。了解这一过程对于开发高效且响应迅速的Android应用至关重要。

    rcharts库实现的图表绘制

    2. `ic_launcher-web.png`:Android应用的启动图标。 3. `.project`:Eclipse项目的配置文件。 4. `project.properties`:Android项目的属性文件,包含版本信息和构建设置。 5. `proguard-project.txt`:ProGuard...

    Peach Fuzzer监视器.pdf

    1. Android Emulator:与Android设备通信的监视器,能够同时对模拟器和真实设备进行操作,用于Android平台的模糊测试。 2. ButtonClicker CanaKit Relay:一个Windows平台上的监视器,能够启动操作或关闭窗口,以便...

Global site tag (gtag.js) - Google Analytics