Android7.0去除Launcher3应用抽屉的实现方法
38 浏览量
更新于2024-09-02
收藏 139KB PDF 举报
"Android7.0开发实现Launcher3去掉应用抽屉的方法详解"
在Android7.0中,Launcher3是默认的主屏幕和应用程序启动器,它通常包含应用抽屉,用户可以通过抽屉来访问所有安装的应用。然而,有的开发者或用户可能希望去除这个抽屉,使桌面变为单层布局,所有应用直接在主屏幕上显示。本篇内容将详细介绍如何通过修改Launcher3源码来实现这一功能。
首先,我们设置一个全局开关,以便在运行时能够动态地切换到无应用抽屉模式。在`LauncherAppState`类中添加一个静态方法`isDisableAllApps()`,该方法根据系统属性`ro.wind.launcher3.ishome2`的值来判断是否禁用应用抽屉。默认情况下,这个属性值为"0",表示应用抽屉启用;如果设置为"1",则表示禁用应用抽屉。
```java
public static boolean isDisableAllApps() {
// Returns false on non-dogfood builds.
return android.os.SystemProperties.get("ro.wind.launcher3.ishome2", "0").equals("1");
}
```
接下来,我们需要处理AllApp键的加载。在`HotSeat`类中,我们需避免加载AllApps按钮。在`isAllAppsButtonRank()`方法中进行如下修改:
```java
public boolean isAllAppsButtonRank(int rank) {
// 添加@{
if (LauncherAppState.isDisableAllApps()) {
return false;
}
// 其他原有逻辑...
}
```
这样,当开关打开时,AllApps按钮将不再出现在热区(HotSeat)中,从而释放出相应的位置。
然后,要将所有应用移动到Launcher的第一层,你需要修改`Workspace`的加载逻辑,确保所有应用图标都被加载到主屏幕而不是应用抽屉中。这通常涉及到对`onFinishLoadingPages()`和`loadPage()`等方法的调整,以确保所有的应用快捷方式(Shortcuts)和文件夹(Folders)都在主屏幕上创建和布局。
此外,还需移除长按应用图标时的删除选项,因为没有应用抽屉,用户无法通过拖动到抽屉来删除应用。这可能涉及到对`DragController`和`DropTarget`的调整,以及对长按事件处理的修改。
在完成上述修改后,记得清理并重建项目,然后在运行时检查效果。通过改变系统属性的值,你可以轻松地在有无应用抽屉的模式之间切换。请注意,这种方法涉及对系统组件的修改,因此可能需要对系统进行签名或获取更高的权限才能正常工作。
实现Android7.0的Launcher3去除应用抽屉需要深入理解Launcher3的源码结构和逻辑,并对关键部分进行适配性修改。这种方法适合于自定义ROM或者特定项目的需求,对于普通用户,可能需要借助第三方启动器来实现类似的功能。
2020-08-25 上传
2016-12-08 上传
2021-08-03 上传
2024-09-11 上传
2023-03-28 上传
2023-12-02 上传
2023-11-24 上传
2023-12-27 上传
2023-06-20 上传
weixin_38612437
- 粉丝: 5
- 资源: 906
最新资源
- 易语言判断进程名限制运行源码-易语言
- 基于matlab计算空间频率
- 解决跨域问题的jar资源文件.zip
- python-2.7.2-pdb.zip
- listcontrol-.rar_网络编程_Visual_C++_
- webusb:WebUSB规范的Node.js实现
- 易语言加载内存支持库模块源码-易语言
- AutoCAD设计图纸凯隆地产样板房3#10现代风格-dwg源格式.zip
- 基于FPGA的64位8级流水线加法器
- ZLG9021P0蓝牙模块 最小系统应用接口板ALTIUM设计硬件原理图+PCB文件.zip
- Basket_3D打印水果篮_
- fenpin.rar_VHDL/FPGA/Verilog_Visual_C++_
- dtw:使用动态时间扭曲进行时间序列分析
- 基于Springboot幼儿园管理系统.zip
- inlet_profile_UDFfluent_udf速度入口_
- AutoCAD设计图纸简约式-dwg源格式.zip