设为首页 加入收藏

TOP

Android Launcher 开发研究学习
2015-04-07 15:29:31 来源: 作者: 【 】 浏览:22
Tags:Android Launcher 开发研究 学习

Launcher是系统启动后第一个启动的程序,是其它应用程序的入口,也就是我们的手机程序的桌面程序;


一、Launcher的定义及构成:


<1>通过查看官方提供的Launcher源码可以知道其实Launcher也是一个Activity,不过它的intent-fliter有点特殊;


Launcher的intent-filter中,action为intent.action.MAIN,表示该Activity是程序的主入口,但是它的category是category.HOME,和一般的app不一样,category.HOME则标识了这个Activity是一个Launcher,其实就是对应的按下HOME键所跳转到的Activity,也就是我们的桌面;


下面我们再来看一下一个普通的App的程序主入口Activity的配置:


category.LAUNCHER表示该Activity在Launcher上可见,所以这一个Activity会被添加到Launcher;


<2>Launcher构成:
HomeScreen(WorkSpace+HotSeats),Shortcut(快捷方式),LiveFolder(文件夹),AppWidget(窗口小部件),WallPaper(壁纸);
AllAppList:


下面我们就来分别研究探讨这四个元素


1、Shortcut
在Launcher的配置文件里面有这样一个广播接收者用于监听添加快捷方式


查看InstallShortcutReceiver的源码



2、LiveFolder


在Launcher.java文件中,找到添加LiveFolder的入口


当我们长按桌面之后,选择添加文件夹,则会执行上面这段代码,在这里会先创建好一个空文件夹;


完成添加


3、AppWidget:AppWidgetProvider用来在HOME页面显示插件


实现步骤:


>>1、在res/xml/文件夹下创建AppWigdetProvider_Provider.xml文件


>>2、修改MainActivity继承自AppWidgetProvider并覆写里面的一些方法,实际上AppWidgetProvider就是一个BroadcastReceiver;


>>3、为Widget创建一个显示用的布局文件:main.xml


>>4、修改程序自动生成的清单文件。在AndroidManifest.xml中,声明上述的AppWidgetProvider的子类是一个Receiver,并且:


(1)、该Receiver的intent-filter的Action必须包含“android.appwidget.action.APPWIDGET_UPDATE”;


(2)、该Receiver的meta-data为“android.appwidget.provider”,并用一个xml文件来描述布局属性。


运行程序:进入WIDGETS页面,可将Widget添加到HOME页


在AppWidgetProvider类中,还有其它相关的方法


AppWidget本质上是一个AppWidgetHostView;



AppWidgetProvider definition
meta-data resource to provider.xml
provider xml to layout.xml
create AppWidgetInfo transact();


Launcher和AppWidget交互流程如下:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android 使用NDK编译sipdroid Lib.. 下一篇Android 开机自动运行和添加删除..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: