前言
提示:原生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的长按功能和桌面长按拖动应用或者文件夹的移除功能,读者可按需接入修改,有什么问题欢迎交流!