Android13 Launcher实现去除应用移除和抽屉长按功能

前言

提示:原生launcher因为由Google推出,基本上保留了一些外国人的使用习惯,为了满足我们的使用习惯,可以做一些操作进行调整。

例如:桌面上显示所有的应用,这个在上一篇文章已经实现,这一篇还可以进行优化,可以禁止抽屉应用进行拖动,保证了应用在桌面上的唯一性,为了更加健壮,保证桌面上的APP和文件夹不能被用户所移除。


一、涉及修改的文件

/packages/apps/Launcher3/src/com/android/launcher3/touch/ItemLongClickListener.java
/packages/apps/Launcher3/src/com/android/launcher3/DeleteDropTarget.java

二、涉及的方法和改动

1.ItemLongClickListener.java下的onAllAppsItemLongClick方法

代码如下(示例):

    private static boolean onAllAppsItemLongClick(View view) {
        // 去除allAPP长按功能,把这部分代码全部注释掉即可
//        TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "onAllAppsItemLongClick");
//        view.cancelLongPress();
//        View v = (view instanceof BubbleTextHolder)
//                ? ((BubbleTextHolder) view).getBubbleText()
//                : view;
//        Launcher launcher = Launcher.getLauncher(v.getContext());
//        if (!canStartDrag(launcher)) return false;
//        // When we have exited all apps or are in transition, disregard long clicks
//        if (!launcher.isInState(ALL_APPS) && !launcher.isInState(OVERVIEW)) return false;
//        if (launcher.getWorkspace().isSwitchingState()) return false;
//
//        StatsLogger logger = launcher.getStatsLogManager().logger();
//        if (v.getTag() instanceof ItemInfo) {
//            logger.withItemInfo((ItemInfo) v.getTag());
//        }
//        logger.log(LAUNCHER_ALLAPPS_ITEM_LONG_PRESSED);
//
//        // Start the drag
//        final DragController dragController = launcher.getDragController();
//        dragController.addDragListener(new DragController.DragListener() {
//            @Override
//            public void onDragStart(DropTarget.DragObject dragObject, DragOptions options) {
//                v.setVisibility(INVISIBLE);
//            }
//
//            @Override
//            public void onDragEnd() {
//                v.setVisibility(VISIBLE);
//                dragController.removeDragListener(this);
//            }
//        });
//
//        DeviceProfile grid = launcher.getDeviceProfile();
//        DragOptions options = new DragOptions();
//        options.intrinsicIconScaleFactor = (float) grid.allAppsIconSizePx / grid.iconSizePx;
//        launcher.getWorkspace().beginDragShared(v, launcher.getAppsView(), options);
        return false;
    }

该方法主要是实现抽屉里面APP的长按事件,注释掉这部分代码后,APP则没有了长按事件,只剩下点击事件了,慎重,按需修改。

2.DeleteDropTarget.java文件下的supportsDrop修改

代码如下(示例):

@Override
protected boolean supportsDrop(ItemInfo info) {
//        return true;
	// 应用和文件夹不允许移除,过滤掉应用和文件夹不允许移除,保留微件和快捷方式可供移除,不然功能会丢失
    return info.itemType != Favorites.ITEM_TYPE_APPLICATION && info.itemType != Favorites.ITEM_TYPE_FOLDER;
}

该方法主要是去除应用和文件夹的长按拖动移除功能,保证了桌面应用的唯一性。


总结

本文主要给原生launcher增加了用户体验,提高国人的使用习惯,去除了抽屉里APP的长按功能和桌面长按拖动应用或者文件夹的移除功能,读者可按需接入修改,有什么问题欢迎交流!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值