1. 程式人生 > >Android Launcher3 禁止使用者拖動圖示建立資料夾,控制拖動圖示到另一個圖示時的動畫效果

Android Launcher3 禁止使用者拖動圖示建立資料夾,控制拖動圖示到另一個圖示時的動畫效果

禁止使用者拖拽應用圖示建立資料夾,需要在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; }