今天刚刚知道如果你的Eclipse里面的工程指向服务器里面的源码记住千万不能在Eclipse里编译~~会在服务器上的源码里多处很多的中间件这样make不了只能清除那些中间件才能编译比较麻烦

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。

转载于:https://www.cnblogs.com/hesiming/archive/2010/09/10/1823526.html

Launcher结构之home screen相关推荐

  1. Launcher负一屏---创建和添加流程

    负一屏整体框架 目录 负一屏整体框架 负一屏创建时机 1.workspace页面顺序 2.负一屏的加入和view的填充 负一屏创建时机 负一屏的创建在Launcher.java的bindScreens ...

  2. Android桌面图标布局,android安装运行launcher并修改桌面图标

    以系统及程序的方式安装和运行Launcher,才能在Launcher启动的时候就让默认的AppWidget程序显示出来.否则将会出现 java.lang.SecurityException: bind ...

  3. android Q launcher 数据加载流程

    时间:2020/08/24 之前公司不允许csdn,笔记写在其它地方.最近整理过来 下一篇:launcher数据加载(二) 前言 androidQ和androidP上Launcher结构有很大区别. ...

  4. android launcher folder功能详解

    AndroidICS4.0的文件夹和2.3的文件夹区别比较大,主要区别有: 一.android2.3的文件夹大小是固定的,4.0的文件夹大小是按照里面的元素大小决定的.        二.androi ...

  5. Android4.4-Launcher源码分析系列之Launcher界面修改、壁纸替换、图标替换、修改滚动指示器

    一.Launcher加载布局的基本流程 Launcher界面的内容展现是由default_workspace.xml决定的,它决定了每个屏幕显示的内容和布局.位于res\xml目录下.它是在Launc ...

  6. android系统开机画面_Android开机画面

    android系统开机画面 Android Splash Screen is the first screen visible to the user when the application's l ...

  7. android task与back stack 开发文档翻译 - 1

    由于本人英文能力实在有限,不足之初敬请谅解 本博客只要没有注明"转",那么均为原创,转贴请注明链接 android task与back stack 开发文档翻译 - 1 andro ...

  8. 使用js冒泡实现点击空白处关闭弹窗

    什么是事件冒泡? 如图:在一个对象上触发某类事件(比如单击onclick事件),这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶 ...

  9. CSS3: Media Query实现响应式Web设计

    十一长假已然过去了一大半.今天倒真是晴朗的不行,向窗外望去几乎可以看到阳光穿过凉爽的空气一缕缕洒落下来的样子.自从不再是学生,对每年的几次 长假就无比珍惜,想方设法让每一天都尽量过的饱满一些:夜里闭上 ...

最新文章

  1. 如何解决虚拟机频繁分离和附加磁盘导致的识别错误
  2. php.ini文件可以复制吗,php安装完成以后要复制php.ini文件
  3. quartz定时器依赖_JAVA使用quartz添加定时任务,并依赖注入对象操作
  4. Mac eclipse找不到source的解决办法
  5. 3.数据类型和变量---用Python做数学运算
  6. 余世维“沟通的技巧”笔记
  7. 学习WPF——WPF布局——了解布局容器
  8. (转)Linux 系统性能分析工具图解读(一、二)
  9. OPPO推送:推送消息的字串,用于参数
  10. 【月径流预测】基于matlab人工生态系统算法优化BP神经网络月径流预测【含Matlab源码 2000期】
  11. 【路径规划】基于matlab RBF优化Qlearning算法机器人避障路径规划【含Matlab源码 1219期】
  12. 任务调度框架 Quartz 用法指南「超详细」
  13. [War3]Fdf文件详解,简单的UI教程演示 - 魔兽争霸3
  14. 微信定时自动发消息。每天和你的obj准时说晚安
  15. Arduino笔记实验(初级阶段)—DHT11温湿度传感器
  16. 守望先锋为何如此火爆
  17. 001深度强化学习的异步方法
  18. python RGB与LCH互转 算法
  19. Windows 应用商店无法打开解决办法
  20. SVM 美国威斯康星州乳腺癌检测

热门文章

  1. csm和uefi_关于CSM和UEFI你要知道的一些事
  2. * 四、要求写一个方法:method。该方法要求传入一个数字n(n要小于10), * 该方法能够计算得到所有各位上的数字不超过n且每一位的数字都不重复的三位数的个数。
  3. Maven+Tomcat的热部署方案
  4. linux s t i a权限,关于Linux下s、t、i、a权限
  5. leetcode94 二叉树的中序遍历
  6. PaperNotes(9)-Learning deep energy model: contrastive divergence vs. Amortized MLE
  7. 使用Remix编写Solidity语言的小例子
  8. 掌握穷变富的12条原则 迅速从普通人变成有钱人
  9. Linux 关闭、开启、查看 防火墙命令
  10. 如何和何时使用 CSS 的权重设置 !important (建议:永不使用!)