墨香带你学Launcher之(一)--概述

作者: 翰墨飘香 | 来源:发表于2016-08-24 14:42 被阅读2160次

    从事launcher开发也有一年有余了,虽然时间比较长了,但是由于是团队开发,其他任务也比较多,所以一直对整个项目的完整情况没有很好的了解,今年换了新的公司,依然是做launcher开发,从新搭建工程,因此借助这个机会完整的学习一下launcher的源码,由于之前没有完全接入,因此也没有做详细的笔记,这次从头参与项目开发,也正好做一下详细的笔记和知识梳理,由于公司项目商业性,为避免泄露公司项目内容,因此本系列教程只做双层launcher的详解,后续会教大家来定制自己的launcher。

    桌面使用操作


    说到launcher,大家也不会陌生,launcher其实就是一个app,从功能上说,是对手机上其他app的一个管理和启动,从代码上说比其他app多了一个属性,就是在AndroidManifest.xml文件中多了一个“<category android:name="android.intent.category.HOME" />”属性,这个属性就是在启动系统或者按Home键时会过滤这个属性,如果系统中只要一个应用具有这个属性,就会直接跳转到这个界面,也就是这个launcher,如果有多个,会弹出选择框让用户选择并且提示用户是否选择默认设置。

    首先我们看一下我运行好的launcher效果图,代码在文章的最后给出,有兴趣的可以star或者fork。下面这两张图是进入桌面后的效果图,第一张为首页图,一般为默认页面,第二张为桌面向左滑动后的效果图。双层桌面一般第一层放制快捷方式和小部件。

    launcher01.png launcher02.png

    下面这张是第二层界面图,主要是所有应用的列表图。

    launcher03.png

    下面一张是长按桌面缩小后显示的菜单界面,主要包含,壁纸、小部件和设置选项。

    launcher04.png

    点击壁纸按钮,跳转到下面的壁纸界面,在这个界面你可以更换桌面壁纸。

    launcher05.png

    点击小部件按钮,跳转到小部件展示界面,在此界面你可以通过长按拖拽将小部件添加到桌面上面,方便使用和操作。

    launcher06.png

    点击设置按钮,跳转到设置界面,你可以设置是否旋转屏幕和设置默认桌面。

    launcher07.png

    在桌面上长按应用图标或者小部件,桌面上的搜索框会消失,替代的是一个删除框,你将应用图标或者小部件拖拽于此,会执行删除图标或者删除小部件的功能,如果你从第二层应用图标列表长按图标移动到该删除框会执行卸载应用的操作。

    launcher08.png

    桌面结构


    上面介绍了桌面的基本操作,下面介绍一下桌面的基本结构。首先看下图:

    launcher09.png

    最外层,也就是手机显示层是一个叫做Workspace的控件,其实在Workspace外层还有一个DragLayer层,在他的里面的最上面,是一个叫做SearchDropTargetView的控件,该控件就是搜索或者删除应用的控件。中间最大的一块是CellLayout,一个Workspace包含一个或者多个CellLayout,多个CellLayout横向并排排列,每个CellLayout在宽度上占用一屏,如下图所示:

    launcher10.png

    当用户左右滑动时会切换中间的CellLayout部分,如下图所示:

    launcher11.png

    CellLayout主要的作用是装在快捷方式或者小部件等。用户通过点击这些快捷方式打开应用。中间的指示点叫做PageIndicator,用来指示你当前处于第几个屏幕上面,也就是第几个CellLayout。最下面的四个图标所占的位置叫做Hotseat,主要是放置短信,拨号等最常用的应用图标。用户左右滑动屏幕时,该控件不做滑动处理。

    当用户长按桌面时,中间的CellLayout会缩小,下面的Hotseat和上面的SearchDropTargetView会隐藏,从而显示出隐藏的三个菜单按钮。

    桌面的基本操作和结构就是这么多,本章只是对桌面的操作和结构做一个概述,从下一篇文章开始讲解桌面的详细信息,包括桌面的启动过程,数据加载过程,应用拖拽等功能。最后附上源码,有兴趣的朋友可以自己下载先行研究。

    源码


    Github代码:Launcher3_mx

    首发地址:墨香博客

    公众账号:Code-MX


    本系列教程均为原创,转载请注明出处,多谢。

    相关文章

      网友评论

      • d6cd92b6d4ac:作者快点写啊~~~就等你出后续了 :+1:
        翰墨飘香: @吉翁豆豆 计划还有一篇,如果有什么需求可以提,我看看有时间就写出来
      • 687c1694d039:好厉害。。我现在也要做一个launcher,要求是APP的应用图标可以移动,但是所有的小部件必须固定,怎么做啊,平板上面。
        翰墨飘香: @安珞书阁 那你要好好看看了,这个还是比较复杂的
        687c1694d039:@翰墨飘香 对的,他们要求自己定制一个launcher,然后后面的壁纸直接用一个图片,做的平板端,平板的都木有接触,然后launcher也木有接触过。。
        翰墨飘香: @安珞书阁 你是说图标可以被拖动,小部件不可以拖动吗
      • 捡淑:马克
      • 汪洋里的一支破船:请教个问题,我在launcher,加载小部件源生的Google搜索应用,显示不出来,是怎么回事,?
        永远的紫日:是权限的问题,源码mmm build就会正常显示了。
        汪洋里的一支破船: @翰墨飘香 我现在在家,上班了发上去,是不是需要什么权限还是怎么的,我添加小部件是谷歌的搜索框。
        翰墨飘香:@汪洋里的一支破船 你怎么添加的能贴一下代码吗?
      • renyq:很好

      本文标题:墨香带你学Launcher之(一)--概述

      本文链接:https://www.haomeiwen.com/subject/aoqosttx.html