Android之Launcher的小试心得

来源:互联网 发布:java重载和覆盖的区别 编辑:程序博客网 时间:2024/05/19 01:30
 Launcher是Android系统的"桌面",在android2.1之前采用的是launcher,android2.2之后采用的launcher2,他们之间最大的区别是launcher2有3D效果,不过launcher2整个系统的代码的改动还是比较大的。 

首先来介绍下launcher目录下的几个文件吧,我做简单说明: 
AddAdapter:添加桌面元素的适配器。 
AllAppsGridView:Icon列表的的主界面,继承gridView。 
DeleteZone:luancher的删除区域,继承ImageView。 
DragController:拖动控制接口。 
DragLayer:整个launcher的父节点,继承FrameLayout,实现接口DrayController。 
DragSource:拖动源接口,定义了void onDropCompleted(View target, boolean success)。 
DropTarget:拖动目标,定义很多拖动过程需要的方法:onDrop,onDragEnter,onDragOver,onDragExit,acceptDrop。 
HandleView:launcher抽屉的开关,不过在android2.2已经没用抽屉了。 
Launcher:整个launcher的程序的入口,代码量最大的一个文件。 
Workspace:整个界面layout,几个窗口就是他下面的子节点。 

我需要改动的就是模仿Mac系统,在桌面的底部加一个icon的列表功能,而且要求是把icon拖入拖出,首先上一张已经做出来的效果图: 
 

我首先列出我完成的几个主要源文件: 
DockProvider:持久化dock Item的元素。 
DockSettings:dock一些元素和uri信息。 
DockView:显示icon的布局,继承LinearLayout实现DropTarget,DragSource, DragController.DragListener,OnClickListener, View.OnLongClickListener接口。 

我在这里主要说下,实现原理,DockView是主要文件,它继承LinearLayout是为了它里面的元素水平摆放,直接用addView继承实现,继承系统的那些接口都是为了,接收到icon拖动的状态和信息。 

首先要在Launcher的setupViews函数里面初始化自己的layout,代码如下: