在android上做了一个月左右的launcher方面的项目,伴随着R3的发出,基本进入维护阶段,由于大部分时间我都是在android提供的源码Launcher中做修改,所以对它的整体基本有了概念,现在开始做一些细节上的总结,按照国际惯例和从整体到局部的原则,我还是先对Launcher做一个整体上的描述:

从manifestl开始看起,先是一些权限方面的设置(补充加上:<uses-sdk android:minSdkVersion="7" />),而后即是一个application(补充加上:android:debuggable="true"),接着是两个activity,一个就是我们的主程序Launcher了,另一个从名字上看也很清晰WallpaperChooser(用于查找列出所有带有特定标记名称的图片,并将他们的返回值作为背景图 ---> 我对这里进行了修改,通过startActivityForResult函数来让他们返回resId,以此作为All Progaram Page的背景)。

再往下是两个Receiver用于安装和卸载shortcut,这里从名字上看我们不太清楚这里的shortcut到底指什么,经过我的尝试,这里的shortcut主要并不是指那些application的icon,而是如:打开浏览器,创建一个网页的快捷方式到桌面。这里的快捷方式的创建和卸载便是由这两个receiver来控制,从他们对应的Java文件可以看出功能。要注意的是,当manifest中做了receiver的配置时,那么程序启动时,receiver就已经伴随运行了。

最后一部分是一个provider,熟悉android的朋友都知道这是用于管理数据库,而在Launcher中,有专门的一个类LauncherProvider用于提供对数据库的具体操作,而数据库的创建和获取还是要由SQLiteOpenHelper来完成,这一部分我会在后面慢慢加入。好,现在对manifest的部分已经基本总结完毕,接着来看main.xml(launcher.xml):

它的层次关系非常易读:DragLayer ---> WorkSpace ---> CellLayout

---> DeleteZone

---> MenuBar

---> ProgramPage

DragLayer对所有位于其中的DragTarget的移动、绘制进行拦截处理(主要是针对屏幕上的Widget、Shortcut、Folder,因为我这里是不存在Shortcut和Folder的,所以只针对Widget)。

WorkSpace则是一个很关键的类,主要是处理屏幕的切换中相关操作(如壁纸的移动,计算移动距离等)、为当前屏幕添加Widget的处理、长按当前屏幕的处理(这里的setLongclick关系到Launcher等类)和在当前屏幕上查找空白格子用于添加Widget,它包含了5个CellLayout分别代表5个屏幕,CellLayout中定义了横竖轴各有多少个空格,并用数组保存了所有的空白格子,当占用一个后就将之对应的Occupied数组位置为true。当然CellLayout中还有许多其他的操作,这里我们先大概说明一下就好。

MenuBar这个就很简单了,由于项目需要,我在屏幕下方添加了MenuBar主要用于添加Shortcut,那么它的操作当然主要就是处理图标的添加和移动,保存和删除。

ProgramPage用于显示所有程序并可以进行分类保存,同样移动、添加、切换、保存、删除。这个ViewGroup其实是包括两部分,一个是ProgramCatagoryList,一个是AllProgramPage。

一个Catagory对应一个AllProagramPage。

这里我已经对manifest和main.xml(launcher.xml)分析完毕,后面的内容则开始对细节上的问题做详细的阐述。


更多相关文章

  1. android 适配器notifyDataSetChanged无法刷新问题解决
  2. Android之高仿微信聊天的界面
  3. App混合开发之WebView进行H5页面基本操作
  4. android 关于屏幕的设置(FullScreen、notitle)等等
  5. Android获取屏幕大小和设置无标题【安卓进化二十一】
  6. Android(安卓)4.1的新特性介绍
  7. 让我们来看看安卓这十年到底有哪些变化
  8. Android(安卓)ORC文字识别之识别身份证号等(附源码)
  9. Android中Adapter中edittext,checkbox记住状态解决方案(二)

随机推荐

  1. Android之Dialog
  2. Android的菜单
  3. Android中使用查找提示
  4. Android的layout分析
  5. Android Juint环境配置
  6. Android 保存图片到相册无法显示的问题
  7. Android adb 模拟滑动 按键 点击事件
  8. Android framework 源码分析一Activity启
  9. Android——SpannableString上标,下标垂直
  10. Android各种简单的对话框的实现案例