Android技术知识Android开发Android开发经验谈

Launcher3桌面开发方案及重要类解析

2024-01-28  本文已影响0人  奔跑吧李博
实现方案

1.写一个apk然后把系统的属性加上去,然后启动的时候默认就指定到这个apk的包名,他就启动。
优点:开发成本相对低,维护都是自己,所有代码可控。
缺点:必须熟练掌握事件分发机制:长按,拖拽,点击,双击,滑动

2.基于Androidlauncher3的源码去做一个定制化的修改
优点:比较稳定,基本功能都有。
缺点:熟悉Launcher3源码,成本比较高,定制化功能需要了解。

Launcher3官方代码下载:

https://android.googlesource.com/platform/packages/apps/Launcher3/

概述

市面上有很多桌面产品,比如91桌面,go桌面,小米桌面等等,虽说千差万别,但都完成了桌面的基本任务,比如说组织图标,拖动图标,滑动页面,显示小工具等等功能。桌面跟其他Android App很大的不同是,他只有一个Activity,但是这个Activity却十分复杂,用几个自定义View把Android的触摸事件的处理玩儿的眼花缭乱,没有长时间的折腾是很难熟悉的。

Launcher3中的常用类

Launcher3其实最主要的是一个Activity,基本上所有的操作都集中在这个Activity上,在Launcher.java 当中,setContentView的参数是R.layout.launcher,我们暂时只研究下桌面竖屏的情况,相关源码在res/layout-port/launcher.xml。

public class LauncherModel extends LauncherApps.Callback implements InstallSessionTracker.Callback {
}
public class LauncherProvider extends ContentProvider {
}
public class DragLayer extends BaseDragLayer<Launcher> implements LauncherOverlayCallbacks {
}
public abstract class DragController<T extends ActivityContext>
        implements DragDriver.EventListener, TouchController {
}
public abstract class DragView<T extends Context & ActivityContext> extends FrameLayout {
}
public class IconCache extends BaseIconCache {
}
class LauncherAppWidgetHost extends AppWidgetHost {
}
public class LauncherRootView extends InsettableFrameLayout {
}
public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,
        IconLabelDotView, DraggableView, Reorderable {
}
public class FolderIcon extends FrameLayout implements FolderListener, IconLabelDotView,
        DraggableView, Reorderable {
}
public interface DragSource {
    void onDropCompleted(View target, DragObject d, boolean success);
}
默认图标配置

default_workspace.xml
我们知道当我们在启动Launcher的时候桌面会有一些已经配置好的图标,其实在第一次运行Launcher的时候会读取一个配置xml文件来进行布局(launcher/res/xml/default_workspace.xml)这个文件可以配置App的快捷方式

这些事我们默认的布局文件3 * 3,4 * 4,5 * 5,5 * 6表示桌面图标的列数和行数,可以根据屏幕的大小来进行适配选择用那一个布局。

参考:
https://blog.csdn.net/chezabo6116/article/details/128223607
手把手教你打造一款个人专属Android桌面
https://github.com/fookwood/Launcher3?tab=readme-ov-file
https://www.jianshu.com/p/4b6ca081ea41

上一篇 下一篇

猜你喜欢

热点阅读