禁止用户拖拽应用图标创建文件夹,需要在Workspace中的onDrop()方法的createUserFolderIfNecessary方法注释掉。这样就不再创建文件夹。
// If the item being dropped is a shortcut and the nearest drop // cell also contains a shortcut, then create a folder with the two shortcuts. /** * 注释这里,不会再添加创建文件夹 */ // if (!mInScrollArea && createUserFolderIfNecessary(cell, container, // dropTargetLayout, mTargetCell, distance, false, d.dragView, null)) { // return; // }
控制拖动图标到另一个图标时的动画效果,则是在Workspace中的manageFolderFeedback()去设置
private void manageFolderFeedback(ItemInfo info, CellLayout targetLayout, int[] targetCell, float distance, View dragOverView) { boolean userFolderPending = willCreateUserFolder(info, targetLayout, targetCell, distance,false); if (mDragMode == DRAG_MODE_NONE && userFolderPending && !mFolderCreationAlarm.alarmPending()) { /** * 把图标拖动到另一个图标上,没有跳动动画,也没有白色圆形动画 * * 其实就是把targetCell[0],targetCell[1]两个参数写得很大, * * 根本没有这个图标显示该动画,需要的话就可以把位置修改会和源码一样 */ // mFolderCreationAlarm.setOnAlarmListener(new // FolderCreationAlarmListener(targetLayout, 18, 18)); // mFolderCreationAlarm.setAlarm(FOLDER_CREATION_TIMEOUT); /** * 如果需要把图标拖动到另一个图标上也有和其他一样的跳动动画 * * 但是没有底部白色圆形动画,注释下面源代码就可实现 * * 下面代码是没有修改过的 */ // mFolderCreationAlarm.setOnAlarmListener(new // FolderCreationAlarmListener(targetLayout, targetCell[0], targetCell[1])); // mFolderCreationAlarm.setAlarm(FOLDER_CREATION_TIMEOUT); return; }