Launcher应用程序列表内容读取过程

Launcher从onCreate函数开始执行,初始化了一些变量,调用mModel.startLoader函数进行读取工作,LauncherModel中定义了一个Loader类,该类负责读取应用程序信息,Loader类创建一个线程LoaderThread来进行数据库的读取操作,LoaderThread中调用loadAndBindWorkspace函数实现了从数据库中读取桌面上应用程序信息,根据快捷方式、组件和文件夹区分开来存储在不同的列表中,bindWorkspace函数用来将已经存储的列表赋给Launcher对象,同时在Workspace中添加并显示这些视图对象。loadAndBindAllApps函数用来读取所有安装的应用程序信息存入列表中,并将当前列表赋给Launcher中的AllAppsView对象。

二、Launcher中桌面的滚动

在桌面上,如果当前的事件是拖动事件,Workspace使用Scroller根据当前的移动的位置及距离进行桌面的移动效果。

三、Launcher桌面的点击事件

首先判断当前所点击的位置放置的是什么东西,如果是快捷方式则启动当前快捷方式所代表的应用程序,如果是文件夹则显示当前文件夹中存在的内容,如果是所有应用程序列表按钮,则显示所有的应用程列表,其他情况则不进行处理。

四、Launcher中的长按事件

如果当前长按的是桌面,则弹出添加到桌面对话框,如果有应用程序快捷方式,则根据当前的应用程序快捷方式创建一个DragView对象,当有移动事件时,移动当前的DragView对象,在拖动开始时删除区域会显示出来(DeleteZone设置为可见),当将图标拖入删除区域时,删除区域及DragView对象的背景颜色会改变,在删除区域中松开手可以实现将当前快捷方式从桌面上删除,图标离开删除区域时删除区域及DragView对象的背景会恢复成原来的样子。 在应用程序列表中,长按某个应用程序,则会关闭掉当前的应用程序列表,以后的拖动事件处理和在桌面上拖动应用程序快捷方式的效果是一样的。如果当前长按的是已打开文件夹的名字,则弹出更改文件夹名字对话框(如下图)。

五、Launcher中的拖动应用程序图标效果

Launcher中使用WindowManager进行应用程序快捷方式的拖动。整个Android的窗口机制是基于WindowManager的,这个接口可以添加View到屏幕,也可以从屏幕删除一个View,它面向的一端是屏幕,另一端是View,直接忽略了Activity或者Dialog等东西,WindowManager是全局的。附件是我写的一个例子。

更多相关文章

  1. android 之json对象解析并展示(含json解析源码)
  2. Android系统默认Home应用程序(Launcher)的启动过程源代码分析(3)
  3. Android 4.0为Launcher主界面所有应用程序图标添加统一背景主题
  4. Android系统在新进程中启动自定义服务过程(startService)的原理分
  5. android 应用程序跳转到Settings的各个界面

随机推荐

  1. Android应用程序组件Content Provider在
  2. Android开发环境搭建,各版本系统下androi
  3. Android 5.1截获HOME键
  4. Android P Camera架构
  5. Android(安卓)数据存储——数据查询query
  6. Android(安卓)编程下设置 Activity 切换
  7. 获得a meta-data 的值
  8. android:ClassNotFoundException for Act
  9. Android 文件及文件夹操作
  10. Android数据解析JSON解析之手动JSON解析