Android laucher总结(转)

转载 2011年01月25日 10:11:00

在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)分析完毕,后面的内容则开始对细节上的问题做详细的阐述。

Android laucher总结

在android上做了一个月左右的launcher方面的项目,伴随着R3的发出,基本进入维护阶段,由于大部分时间我都是在android提供的源码Launcher中做修改,所以对它的整体基本有了概念,现...

android.category.intent.LAUCHER和DEFAULT

1、要弄清楚这个问题,首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent。 Explicit Intent明确的指定了要启动的Acitiv...

Android中如何使用ViewPager实现类似laucher左右拖动效果

现在很多Android应用在首次安装完都会有指引如何使用该应用的某些功能的指引界面,这样会获得很好的用户体验,能够帮助用户更好使用应用的某些功 能。其实该功能和Android主界面的 luncher ...

android laucher

  • 2013年09月06日 10:09
  • 1.3MB
  • 下载

Android4.42Laucher3

  • 2014年05月17日 10:51
  • 6.05MB
  • 下载

Android中如何使用ViewPager实现类似laucher左右拖动效果

现在很多Android应用在首次安装完都会有指引如何使用该应用的某些功能的指引界面,这样会获得很好的用户体验,能够帮助用户更好使用应用的某些功能。其实该功能和Android主界面的 luncher 的...
  • cjjky
  • cjjky
  • 2012年03月31日 22:15
  • 16962

Android的Laucher相关的权限(Shortcut)

很多小伙伴使用shortcut可能会遇到很多莫名的问题,这里提供一份权限声明列表供大家参考哦,希望有帮助,如果有更多的欢迎提出补充啦。kage: com.eg.android.AlipayGphone...

【Android】信鸽推送通知栏点击之重复打开APP&重复从Laucher主入口启动问题

信鸽推送重复打开APP问题

Android Launcher开发(六)通过分析Laucher源码整理添加快捷方式的思路

在实际开发中,实际上有很多功能或者设计我们都可以借鉴一下安卓源码, 在我写的这个Laucher系列里,就关于分析Laucher源码来开发桌面快捷方式的思路我大概整理了一下. 希望大家看了之后再遇到类似...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android laucher总结(转)
举报原因:
原因补充:

(最多只允许输入30个字)