android的launcher分析
今年做了 launcher相关的工作,看了很长期。不少人都在修改launcher,但还没有详细 的文档,把自己积累的东西分享出来,大家一起积累。这份源码是基于2.1 的launched,以后版本虽有变
launcherlauncher, 今年做了相关的工作,看了很长期。不少人都在修改但还没有详细的 2.1launched, 文档,把自己积累的东西分享出来,大家一起积累。这份源码是基于的以后 版本虽有变化,但大概的原理向来还是保留了。 、主要文件和类 1 .Launcher.java:launcheractivity□ 中主要的 2 .DragLayer.java:launcherlayout^JrootviewDragLayer 实际上也是一个抽象的界面,用 0 来处理拖动和对事件进行初步处理然后按情况分发下去,角色是一个 controlleroonlnterceptTouchEvent(MotionEvent)touch 它首先用来拦截所有的事件,如果 itemonTouchEvent() 是长按拖动的话不把事件传下去,直接交由处理,这样 emitemview,view 就可以实现让的挪移了,如果不是拖动的话就把事件传到目标交有目标 的事件处理函数做相应处理。如过有要对事件的特殊需求的话可以修改 onlnterceptTouchEvent(MotionEvent) 来实现所需要的功能。 3 .DragController.java:^/ Drag 定义的一个接口。包含一个接口,两个方法和两个静态常 DragListeneronDragStart(),onDragEnd() 量。接口为(包含两个函 , onDragStartonDragEnd 数)。是在刚开始拖动白时候被调用,。是在拖动完成时被调用。 launcherDeleteZone,emonDragStart() 在中典型的应用是在长按拖动让时调用显示,在 onDragEnd()startDrag() 拖动结束的时候隐藏。两个函数包括和 setDragltemlnfo().startDrag()item 用于在拖动是传递要拖动的的信息以及拖动的方式, setDragltemlnfoem 。用于传递计的参数信息(包括位置以及大小)。两个常量为 DRAG_ACTION_MOVE,DRAG_ACTION_COPY 来标识拖动的方式, DRAG_ACTION_MOVEhem, 为挪移,表示在拖动的时候需要删除原来的 DRAG_ACTION_COPYRem 为复制型的拖动,表示保留被拖动的。 4 .LauncherModelJava: 辅助的文件。里面有许多封装的对数据库的操作。包含儿个线程, ApplicationsLoaderDesktopItemsLoader)ApplicationsLoader 其中最主要的是和在力口 DesktopItemsLoader 载所有应用程序时使用,在力口载 workspace 的时候使用。其他的函数就是对数据库的封装,比如在删除,替换,添加程序 UI 的时候做更新数据库和的工作。

