Android laucher总结
来源:互联网 发布:javascript犀牛书pdf 编辑:程序博客网 时间:2024/05/21 09:24
在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和FIHLauncherAppWidgetHost等类)和在当前屏幕上查找空白格子用于添加Widget,它包含了5个CellLayout分别代表5个屏幕,CellLayout中定义了横竖轴各有多少个空格,并用数组保存了所有的空白格子,当占用一个后就将之对应的Occupied数组位置为true。当然CellLayout中还有许多其他的操作,这里我们先大概说明一下就好。
MenuBar这个就很简单了,由于项目需要,我在屏幕下方添加了MenuBar主要用于添加Shortcut,那么它的操作当然主要就是处理图标的添加和移动,保存和删除。
ProgramPage用于显示所有程序并可以进行分类保存,同样移动、添加、切换、保存、删除。这个ViewGroup其实是包括两部分,一个是ProgramCatagoryList,一个是AllProgramPage。
一个Catagory对应一个AllProagramPage。
这里我已经对manifest和main.xml(launcher.xml)分析完毕,后面的内容则开始对细节上的问题做详细的阐述。
转自:http://www.cnblogs.com/Sunde/archive/2010/11/29/1890797.html
- Android laucher总结
- Android laucher总结
- Android laucher总结(转)
- android laucher 拖动主要文件
- android.category.intent.LAUCHER和DEFAULT
- android setting laucher systemui 源码学习
- Android的Laucher相关的权限(Shortcut)
- android Task,launcherMode对返回键与laucher的影响
- Android中如何使用ViewPager实现类似laucher左右拖动效果
- Android中如何使用ViewPager实现类似laucher左右拖动效果
- Android中如何使用ViewPager实现类似laucher左右拖动效果
- Android中如何使用ViewPager实现类似laucher左右拖动效果
- Android中如何使用ViewPager实现类似laucher左右拖动效果
- Android中如何使用ViewPager实现类似laucher左右拖动效果
- Android Launcher开发(六)通过分析Laucher源码整理添加快捷方式的思路
- Android中如何使用ViewPager实现类似laucher左右拖动效果
- Android中如何使用ViewPager实现类似laucher左右拖动效果
- Android中如何使用ViewPager实现类似laucher左右拖动效果
- Web测试:Selenium使用
- Allow regions of specific table to be load-balanced
- 马上就要工作了!哦也!
- 引用JS时一点技巧
- Debian Lenny Tips – Install Eclipse
- Android laucher总结
- extern void * memcpy(void *dest,void *src,unsigned int count)
- Android launcher - Launcher(一)
- 在控制台环境下调用MFC DLL崩溃的问题小结
- Android launcher - Workspace
- 我是做.NET产品的。
- ZJUT1099 最少拦截系统
- Ogitor探索之代码分析(1)---OgreWidget::mouseMoveEvent;OgitorsRoot::OnMouseMove
- 福州市申请及实施房屋拆迁工作程序规范