(4)Launcher客制化之 workspace长按事件弹出Widgets界面

本文介绍了如何修改launcher.java文件,实现长按workspace时,不进入设置界面,而是弹出Widgets选择界面。通过注释原有代码并添加新的功能调用,可以实现这一客制化操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转帖请注明:来自http://blog.youkuaiyun.com/xufeifandj

同样修改lancher.java里面文件

OnLongclick事件,因为workspace注册了Launcher,OnLongClick事情。Launcher实现了长按的事件。

因此在 注释掉,进入设置界面代码,替换为,跳转到 Widgets里面即可。直接看代码。

 public boolean onLongClick(View v) {
        if (!isDraggingEnabled()) return false;
        if (isWorkspaceLocked()) return false;
        if (mState != State.WORKSPACE) return false;
        if (v instanceof Workspace) {
        //修改长按显示widgets
            showAllApps(true, AppsCustomizePagedView.ContentType.Widgets, true);
            return true;

//            if (!mWorkspace.isInOverviewMode()) {
//                if (mWorkspace.enterOverviewMode()) {
//                    mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
//                            HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); 
//                  
//                    return true;
//                } else {
//                    return false;
//                }
//            }
        }


        if (!(v instanceof CellLayout)) {
            v = (View) v.getParent().getParent();
        }


        resetAddInfo();
        CellLayout.CellInfo longClickCellInfo = (CellLayout.CellInfo) v.getTag();
        // This happens when long clicking an item with the dpad/trackball
        if (longClickCellInfo == null) {
            return true;
        }


        // The hotseat touch handling does not go through Workspace, and we always allow long press
        // on hotseat items.
        final View itemUnderLongClick = longClickCellInfo.cell;
        boolean allowLongPress = isHotseatLayout(v) || mWorkspace.allowLongPress();
        if (allowLongPress && !mDragController.isDragging()) {
            if (itemUnderLongClick == null) {
                // User long pressed on empty space
//                mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
//                        HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
//                // Disabling reordering until we sort out some issues.
//                if (mWorkspace.isInOverviewMode()) {
//                    mWorkspace.startReordering(v);
//                } else {
//                    mWorkspace.enterOverviewMode();
//                }
            //修改长按显示widgets
                showAllApps(true, AppsCustomizePagedView.ContentType.Widgets, true);


            } else {
                if (!(itemUnderLongClick instanceof Folder)) {
                    // User long pressed on an item
                    mWorkspace.startDrag(longClickCellInfo);
                }
            }
        }
        return true;
    }

### 实现 Android Launcher 个性 对于希望深入了解并实现 Android Launcher 个性的人来说,可以从多个方面入手。开源项目如 Nova Launcher 和 Evie Launcher 提供了丰富的源码资源来帮助理解现有功能的实现机[^1]。 #### 修改布局参数 通过调整 `display-option` 配置项可以改变设备上显示效果的关键属性。例如,在特定尺寸范围内的手机可以通过设置 `<display-option>` 来定义图标大小、文字大小以及其他视觉特性: ```xml <display-option launcher:name="Large Phone" launcher:minWidthDps="406" launcher:minHeightDps="694" launcher:iconImageSize="56" launcher:iconTextSize="14.4" launcher:canBeDefault="true"/> ``` 这段 XML 片段展示了如何针对大屏手机优界面展示[^2]。 #### 调整工作区边距与间距 为了使应用程序的工作区域更加紧凑或宽松,需编辑位于 `packages/apps/Launcher3/src/com/android/launcher3/DeviceProfile.java` 文件中的相关逻辑。此文件负责管理屏幕上的网格布局以及各个组件之间的距离,通过对其中方法和变量的操作可达成预期的效果。 #### 利用官方文档和技术支持材料 《Android 12.0 Launcher 指南》提供了详细的步骤说明和支持信息,有助于快速掌握自定义过程中的关键技术要点。该手册不仅涵盖了基础配置更改,还包括更深入的功能扩展建议[^3]。 #### 借助成熟的第三方解决方案 Launcher3 开源项目是一个很好的起点,它基于谷歌原始代码库构建而成,并经过适当改造以便于二次开发人员使用。借助这个平台,不仅可以继承原生系统的全部优势,还能享受到额外增加的各种实用工具和服务接口[^4]。 #### 平台适配注意事项 当涉及到不同硬件架构(如 RK3588)和平版本本(如 Android 12)组合时,则需要注意兼容性和性能调优等问题。具体实践过程中可能需要对某些底层模块做出针对性改动以确保最佳表现[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

重播

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值