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中做修改,所以对它的整体基本有了概念,现...
  • liucheng2009
  • liucheng2009
  • 2011年08月01日 17:34
  • 889

将自己launcher作为开机launcher

说明:此文章主要针对新手,大神可以跳过,不足之处请指教 1   android5.1 launcher分为系统的Launcher2跟一个叫home sample的东东(这个没去具体研究过),有时候我们...
  • u014769372
  • u014769372
  • 2016年09月08日 14:00
  • 487

android 当系统存在多个Launcher时,如何设置开机自动进入默认的Launcher?

面以设置Google Launcher2作为默认启动的Launcher为例,其包名为com.android.launcher2 编辑packages/apps/Provision/src/com/a...
  • zhuch1111
  • zhuch1111
  • 2013年08月22日 16:48
  • 2231

Android launcher2 刷新/更新应用列表界面

在做定制化的launcher2时可能会需要刷新应用列表,本以为挺简单,可读了好多遍相关的源码都没找到有效的方法,只好去网上找下资料,费了半天才找到了一个合适的方法,也挺方便的,步骤如下: 1、Laun...
  • baiyulinlin1
  • baiyulinlin1
  • 2016年09月17日 17:40
  • 940

Android4.2_Launcher_AndroidMainfest.xml

  • u012587637
  • u012587637
  • 2014年08月08日 10:18
  • 1017

android4.4 Launcher主菜单界面同样采用背景图片的方式

1.android4.4 默认主菜单是黑色,如果想变成透明,就是显示壁纸,更改 packages\apps\Launcher3\src\com\android\launcher3\AppsCusto...
  • luoyunjin
  • luoyunjin
  • 2015年05月14日 19:57
  • 814

给父母的礼物!一键让Android变身老人机

要说现在的Android手机可真是便宜到渣了,几百元的价格甚至比某些山寨机还便宜,真心想买台送给父母。可问题是——父母不会用!而且Android默认的小字体对于老人的眼睛也是个莫大折磨,难道真的要就此...
  • Aniu127
  • Aniu127
  • 2014年02月26日 10:18
  • 656

Android 设置默认Launcher

如果想定制Android系统,想让我们自己的Launcher
  • andylau6789
  • andylau6789
  • 2014年05月01日 13:13
  • 1595

Android Launcher浅析(三)

Launcher是系统启动后第一个启动的程序,是其它应用程序的入口,也就是我们的手机程序的桌面程序; 一、Launcher的定义及构成: 通过查看官方提供的Launcher源码可以知道其实La...
  • u011694328
  • u011694328
  • 2016年06月29日 17:28
  • 5087

Android设置默认Launcher

当系统存在多个launcher时,若没有设置默认launcher,开机启动后会弹出提示框,罗列所有launcher,用户选择并设置了默认launcher后,按home键以及以后重启都会进入默认的lau...
  • brian_huamm
  • brian_huamm
  • 2014年11月05日 18:45
  • 627
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android laucher总结(转)
举报原因:
原因补充:

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