今天刚刚知道如果你的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. android 按下home键执行什么,Android下得到Home键按下的消息
  2. android栈和队列
  3. 3种用python代码实现99乘法表
  4. 我认为视频内容不会取代文字内容的原因
  5. uni-app—从安装到卸载
  6. C语言的单向链表的操作方法
  7. java newtonsoft.json_Newtonsoft.Json 的序列化与反序列化
  8. HDU1712:ACboy needs your help(分组背包)
  9. pdf2cad v12
  10. 用QEMU搭建arm开发环境之一:QEMU能干啥
  11. html5广告具有什么特性,最快认知什么才是HTML5广告!
  12. 水波纹 android,Android特效之水波纹的实现
  13. EasyCVR平台通过国标GB28181接入柯达NVR显示注册失败,该如何解决?
  14. Miyeok Guk (Korean Seaweed Soup) - Миён Гук (Корейский суп из морепродуктов)
  15. SAP ERP FI(Financial Accounting)财务会计--BW方向--初级--1
  16. SpringBoot 实现国际化 SpringBoot配置国际化 SpringBoot 国际化 springboot实现国际化 springboot配置国际化 springboot国际化代码实现
  17. 12Cr2Mo1R(H)化学成分
  18. 【精彩点评】吸取历史经验,构建坚实的比特币产业
  19. 在互联网卷不动了,还能做什么?
  20. mysql设置字符集gb2312_MySQL字符集 GBK、GB2312、UTF8區別 解決 MYSQL中文亂碼問題

热门文章

  1. 特殊mac地址文档_Mac颜值秒杀Win10?五款神器让Win10化身macOS
  2. mysql瓶颈分析_网站瓶颈分析—MYSQL性能分析
  3. a1708硬盘转接口_资讯:希捷上架新款银河Exos系列机械硬盘,15000转+SAS协议
  4. 简单 局部 整体光照模型计算机图形学,计算机图形学北大光照模型.ppt
  5. 继承Thread 创建多线程的简单实现
  6. 表示数值的字符串(有限状态自动机与搜索)
  7. 超硬核!我统计了BAT笔试面试出现频率最高的五道题,学会了总能碰到一道
  8. leetcode238 除本身以外数组的乘积
  9. Java设计模式(1 / 23):策略模式
  10. Volatile原子性一致性JVM指令重排