本功能基于Android13 Launcher3
需求:模仿华为问界车机,实现横向滑动桌面空白处,切换壁纸功能(本质只是切换背景,没有切换壁纸)。
实现效果:
实现思路:
第一步首先得增加手势识别
第二步切换底图,不切换壁纸是因为切换壁纸动作太大,需要调用到WallpaperManager,耗时且会触发应用activity重启
原生系统有识别上滑与下滑的动作,那我们应该增加一个左滑和右滑的动作识别
禁止上滑出所有app视图的实现在这里
src/com/android/launcher3/touch/AbstractStateChangeTouchController.java:137: return true;//Kevin.Ye added for not pulling up AllApps
构建了mDetector = new SingleAxisSwipeDetector(l, this, dir);
SingleAxisSwipeDetector 可以实现,横向 竖向 两个方向
PortraitStatesTouchController extends AbstractStateChangeTouchController 定义了竖向的 手势识别
搞清楚调用关系
由于继承关系是这样的:QuickstepLauncher extends BaseQuickstepLauncher extends Launcher
所以dragndrop/DragLayer.java调用 mActivity.createTouchControllers(