Android launcher -- launcher源码修改 1

Android 同时被 2 个专栏收录
80 篇文章 0 订阅
9 篇文章 0 订阅

launcher源码修改 1

launcher网上的架构图:
这里写图片描述

launcher源码Java文件:
|这里写图片描述|这里写图片描述|

launcher 布局

这里写图片描述

这里写图片描述

这里写图片描述

launcher中主要类的简介

1、AddAdapter.java
添加桌面元素的适配器,添加元素shortcuts、widgets、folders、wallpapers

2、AllAppsGridView.java
Icon列表的的主界面,继承gridView。

3、ApplicationInfo.java
一个可启动的应用。

4、DeleteZone.java
gridview的adapter。

5、BubbleTextView.java
一个定制了的textview,主要用于显示桌面应用图标。

6、CellLayout.java
是桌面workspace上的每个页面,有屏幕有三屏

<include android:id="@+id/cell1" layout="@layout/workspace_screen" />
<include android:id="@+id/cell2" layout="@layout/workspace_screen" />
<include android:id="@+id/cell3" layout="@layout/workspace_screen" />

7、DeleteZone.java
luancher的删除区域,继承ImageView。在平时是处于隐藏状态,在将item长按拖动的时候会显示出来。DeleteZone实现了DropTarget和DragListener两个接口。

8、DragController.java
拖动控制接口,为Drag定义的一个接口。

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

10、DragScroller.java
拖动时处理滚动接口。

11、DragSource.java
拖动源接口。

12、DropTarget.java
拖动目标。

13、FastBitmapDrawable.java
图片处理工具。

14、Folder.java
由用户选择或由系统生成的一组Icons,这些图片所放在文件。

15、FolderIcon.java
一个图标会出现在workspace中代表文件夹Folder。

16、FolderInfo.java
ItemInfo子类,包含文件夹信息。

17、HandleView.java
launcher抽屉的开关,在android2.2已经没用抽屉了。

18、InstallShortcutReceiver.java
Shortcut安装广播。

19、UninstallShortcutReceiver.java
Shortcut卸载广播。

20、ItemInfo.java
Launcher中对Item的抽象ItemInfo信息,所有类型item的父类。

ItemInfo包含:
id(标识item的id);
cellX(在横向位置上的位置,从0开始);
spanX(在横向位置上所占的单位格);
spanY(在纵向位置上所占的单位格);
screen(在workspace的第几屏,从0开始);
itemType(item的类型,有widget,search,application等);
Container(item所在容器的id,如容器是Folder)。

21、Launcher.java
默认应用程序Activity,整个launcher的程序的入口。

22、LauncherApplication.java
在VM中设置参数,如强制定义自己软件的堆内存大小。

23、LauncherAppWidgetHost.java
24、LauncherAppWidgetHostView.java
25、LauncherAppWidgetInfo.java
第23、24、25与桌面小部件Widget相关。

26、LauncherModel.java
对数据库的操作。主要有几个线程,其中最主要的是ApplicationsLoader和DesktopItemsLoader。ApplicationsLoader在加载所有应用程序时使用,DesktopItemsLoader在加载workspace的时候使用。

27、LauncherProvider.java
launcher的数据库,存储了桌面的item的信息。在创建数据库的时候会loadFavorites(db)方法,loadFavorites()会解析xml目录下的default_workspace.xml文件,把其中的内容读出来写到数据库中。

28、LauncherSettings.java
设置相关的工具。

29、LiveFolder.java
30、LiveFolderAdapter.java
31、LiveFolderIcon.java
32、LiveFolderInfo.java
第29、30、31、32与livefolder实时文件夹相关。
实时文件夹是在SDK1.5中引入的,支持开发人员在设备的默认打开屏幕(我们将其称为设备的主页)上公开 ContentProvider,如联系人信息、笔记和媒体。将ContentProvider(比如Android的 contactsContentProvider)在主页上公开为活动文件夹之后,在联系人数据库中添加、删除或修改联系人时,此实时文件夹能够刷新自身所包含的内容。

33、Search.java
搜索。

34、UserFolder.java
35、UserFolderInfo.java
桌面文件夹包含applications,shortcuts。

36、Utilities.java
各种工具,小工具类。

37、WallpaperChooser.java
选择壁纸wallpaper。

38、Widget.java
表示启动小部件Widget的一个实例,如搜索。

39、Workspace.java
Workspace是一个大面积的壁纸和有限数量的屏幕。每个屏幕包含一些用户可以交互的图标、文件夹或小部件。Workspace是指仅使用固定宽度的Workspace。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页

打赏

xhBruce

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值