Launcher布局分析

                                                                                                      Launcher

      Launcher开发已经两年了,刚开始的时候各种蛋疼,由于是做room,各种编译源码,由于是ubantu系统,开发环境不好配置,一个星期之后源码编译好了,各种源码都有了,公司又要换平台,换芯片,我去!!!!

      后来又直接懒得去编译了,就直接在网上下载源码,第一个项目就是Launcher,由于对Launcher不熟,在网上大把收集资料,把Launcher流程走了一遍,基本了解了Launcher的流程!我们开发三个人一个月,对于Launcher源码各种修改,一个月之后就在360市场上线了,我们感慨一个月比半年的代码都写的多,测试还没有,靠开发自测!那段时间,累并快乐着!现在产品可以在360市场可以搜索到“X桌面”

     现在对单层Launcher源码布局做一个大致分析吧:

               Launcher准确来说就只有一个Activity,就是Launcher.java,各种view的显示都是布局的隐藏和显示


               Launcher布局分析_第1张图片

                 DragLayer:整个launcher的父节点,继承FrameLayout,实现接口DrayController,是内部支持拖拽的viewgroup。DragLayer实际上也是一个抽象的界面,用来处理拖动和对事件进行初步处理然后按情况分发下去,角色是一个controller。它首先用onInterceptTouchEvent(MotionEvent)来拦截所有的touch事件,如果是长按item拖动的话不把事件传下去,直接交由onTouchEvent()处理,这样就可以实现item的移动了,如果不是拖动item的话就把事件传到目标view,交有目标view的事件处理函数做相应处理。如过有要对事件的特殊需求的话可以修改onInterceptTouchEvent(MotionEvent)来实现所需要的功能。

          Launcher:是一个Activity,整个launcher的程序的入口,代码量最大的一个文件。数据的回调操作,更新ui!改变Launcher界面布局就在launcher.xml文件中对各个布局的编辑

        WorkSpace:间接继承自ViewGroup,是页面滑动的父布局,它里面可以有一个或者多个CellLayout;

        CellLayout:直接继承自ViewGroup,是WorkSpace的子布局,每滑动一个页面就是一个CellLyout,每一个CellLayout里面都有坐标,都有每一个格子,当加载小部件的时候,由于小部件的不规则,占用的格子有大有小,所以在default_workspace文件中配置小部件的大小,占用几个格子,而纯粹的应用只占一个格子。

    BubbleTextView:继承自TextView,就是桌面显示的应用的图标,CellLayout可以有多个BubbleTextView而且要按格子数量来算。

    HotSeat“里面也是由BUbbTextView组合成的,就是把常用的应用加入到下面,CellLayout滑动不跟随滑动,在launcher.xml文件中配置。Launcher布局分析_第2张图片



                                                                                                                      


   


     



你可能感兴趣的:(Launcher布局分析)