From 79596a692ec604cddd468e706337e1921a974dd9 Mon Sep 17 00:00:00 2001 From: Amit Kumar Date: Tue, 14 Apr 2020 05:57:12 +0530 Subject: [PATCH 1/2] Fix Icon disappear bug on drag and drop --- .../features/launcher/LauncherActivity.java | 83 ++++++++++++------- 1 file changed, 51 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java b/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java index cfe9cd778a..f6612af937 100755 --- a/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java +++ b/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java @@ -64,6 +64,7 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; +import androidx.core.view.GestureDetectorCompat; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; @@ -241,6 +242,7 @@ public class LauncherActivity extends AppCompatActivity implements private int moveTo; private Configuration oldConfig; private WallpaperChangeReceiver wallpaperChangeReceiver; + private GestureDetectorCompat mDetector; public static LauncherActivity getLauncher(Context context) { if (context instanceof LauncherActivity) { @@ -1690,7 +1692,8 @@ public class LauncherActivity extends AppCompatActivity implements if (!mLongClickStartsDrag) { iconPressedAt = System.currentTimeMillis(); } - } else if (event.getActionMasked() == MotionEvent.ACTION_MOVE) { + } + else if (event.getActionMasked() == MotionEvent.ACTION_MOVE) { if (longPressed || (!mLongClickStartsDrag && (System.currentTimeMillis() - iconPressedAt) > 150)) { longPressed = false; @@ -1705,10 +1708,17 @@ public class LauncherActivity extends AppCompatActivity implements parentPage = -99; } iconView.clearAnimation(); - iconView.setVisibility(View.INVISIBLE); + movingApp.setVisibility(View.INVISIBLE); dragDropEnabled = true; - return true; } + } else if(event.getAction() == MotionEvent.ACTION_UP) { + new Handler(Looper.getMainLooper()).post(() -> { + if(movingApp != null && movingApp.getVisibility() != VISIBLE) { + movingApp.setVisibility(VISIBLE); + movingApp.invalidate(); + } + }); + return false; } return false; } @@ -1881,7 +1891,7 @@ public class LauncherActivity extends AppCompatActivity implements } } } else { - blissFrameLayout.setAnimation(null); + blissFrameLayout.clearAnimation(); new Handler(Looper.getMainLooper()).post( () -> removeUninstallIcon(blissFrameLayout)); } @@ -1960,7 +1970,7 @@ public class LauncherActivity extends AppCompatActivity implements if (mFolderWindowContainer.getVisibility() == View.VISIBLE) { activeFolder.items.remove(shortcutItem); mFolderAppsViewPager.getAdapter().notifyDataSetChanged(); - blissFrameLayout.setAnimation(null); + blissFrameLayout.clearAnimation(); ((ViewGroup) blissFrameLayout.getParent()).removeView(blissFrameLayout); if (activeFolder.items.size() == 0) { ((ViewGroup) activeFolderView.getParent()).removeView @@ -1980,7 +1990,7 @@ public class LauncherActivity extends AppCompatActivity implements addAppToGrid(gridLayout, view, gridLayout.indexOfChild(activeFolderView)); } - activeFolderView.setAnimation(null); + activeFolderView.clearAnimation(); ((ViewGroup) activeFolderView.getParent()).removeView( activeFolderView); hideFolderWindowContainer(); @@ -1991,7 +2001,7 @@ public class LauncherActivity extends AppCompatActivity implements hideFolderWindowContainer(); } } else { - blissFrameLayout.setAnimation(null); + blissFrameLayout.clearAnimation(); ((ViewGroup) blissFrameLayout.getParent()).removeView(blissFrameLayout); } } @@ -2015,7 +2025,8 @@ public class LauncherActivity extends AppCompatActivity implements if (mWobblingCountDownTimer != null) { mWobblingCountDownTimer.cancel(); } - } else if (dragEvent.getAction() == DragEvent.ACTION_DRAG_LOCATION) { + } + else if (dragEvent.getAction() == DragEvent.ACTION_DRAG_LOCATION) { // Don't offer rearrange functionality when app is being dragged // out of folder window if (getAppDetails(movingApp).container != Constants.CONTAINER_DESKTOP @@ -2032,6 +2043,7 @@ public class LauncherActivity extends AppCompatActivity implements cY = mDock.getY() + dragEvent.getY() - dragShadowBuilder.yOffset; int index = getIndex(mDock, cX, cY); + // If hovering over self, ignore drag/drop if (index == mDock.indexOfChild(movingApp)) { discardCollidingApp(); @@ -2039,14 +2051,12 @@ public class LauncherActivity extends AppCompatActivity implements } // If hovering over an empty location, ignore drag/drop + // If hovering over another app icon either move it + // Or create a folder depending on time and distance if (index == EMPTY_LOCATION_DRAG) { discardCollidingApp(); } - - // If hovering over another app icon - // either move it or create a folder - // depending on time and distance - if (index != EMPTY_LOCATION_DRAG) { + else { BlissFrameLayout latestCollidingApp = (BlissFrameLayout) mDock.getChildAt(index); if (collidingApp != latestCollidingApp) { @@ -2086,7 +2096,8 @@ public class LauncherActivity extends AppCompatActivity implements mDockReorderAlarm.setAlarm(REORDER_TIMEOUT); } return true; - } else if (dragEvent.getAction() == DragEvent.ACTION_DROP) { + } + else if (dragEvent.getAction() == DragEvent.ACTION_DROP) { cleanupDockReorder(true); cleanupReorder(true); if (mFolderWindowContainer.getVisibility() != View.VISIBLE) { @@ -2148,13 +2159,13 @@ public class LauncherActivity extends AppCompatActivity implements @Override public boolean onDrag(View view, DragEvent dragEvent) { - if (dragEvent.getAction() == DragEvent.ACTION_DRAG_STARTED) { isDragging = true; if (mWobblingCountDownTimer != null) { mWobblingCountDownTimer.cancel(); } - } else if (dragEvent.getAction() == DragEvent.ACTION_DRAG_LOCATION) { + } + else if (dragEvent.getAction() == DragEvent.ACTION_DRAG_LOCATION) { cX = dragEvent.getX() - dragShadowBuilder.xOffset; cY = mHorizontalPager.getY() + dragEvent.getY() - dragShadowBuilder.yOffset; @@ -2217,12 +2228,7 @@ public class LauncherActivity extends AppCompatActivity implements // If hovering over an empty location, ignore drag/drop if (index == EMPTY_LOCATION_DRAG) { discardCollidingApp(); - } - - // If hovering over another app icon - // either move it or create a folder - // depending on time and distance - if (index != EMPTY_LOCATION_DRAG) { + } else { View latestCollidingApp = getGridFromPage(page).getChildAt(index); if (collidingApp != latestCollidingApp) { if (collidingApp != null) { @@ -2263,7 +2269,10 @@ public class LauncherActivity extends AppCompatActivity implements mReorderAlarm.setAlarm(REORDER_TIMEOUT); } } - } else if (dragEvent.getAction() == DragEvent.ACTION_DROP) { + } + else if (dragEvent.getAction() == DragEvent.ACTION_DROP) { + Log.d(TAG, "onDrop"); + cleanupReorder(true); cleanupDockReorder(true); if (mFolderWindowContainer.getVisibility() != View.VISIBLE) { @@ -2277,7 +2286,11 @@ public class LauncherActivity extends AppCompatActivity implements addAppToGrid(gridLayout, movingApp); } } + Log.i(TAG, "onDrop: inside "+ (movingApp.getParent() == null)); + Log.i(TAG, "onDrop: inside "+ (movingApp.getVisibility())); + movingApp.setVisibility(View.VISIBLE); + Log.i(TAG, "onDrop: inside "+ (movingApp.getVisibility())); makeAppWobble(movingApp, true, gridLayout.indexOfChild(movingApp)); } else { if (collidingApp.getParent().getParent() instanceof HorizontalPager) { @@ -2287,7 +2300,8 @@ public class LauncherActivity extends AppCompatActivity implements } folderInterest = false; } - } else { + } + else { cX = dragEvent.getX() - dragShadowBuilder.xOffset; cY = mHorizontalPager.getY() + dragEvent.getY() - dragShadowBuilder.yOffset; @@ -2311,14 +2325,14 @@ public class LauncherActivity extends AppCompatActivity implements currentItem)).indexOfChild(movingApp)); } } - } else if (dragEvent.getAction() == DragEvent.ACTION_DRAG_ENDED) { + } + else if (dragEvent.getAction() == DragEvent.ACTION_DRAG_ENDED) { if (isDragging) { isDragging = false; } - if (movingApp.getVisibility() != VISIBLE) { - movingApp.setVisibility(View.VISIBLE); - } + cleanupReorder(true); + cleanupDockReorder(true); if (!dragEvent.getResult()) { if (mFolderWindowContainer.getVisibility() == View.VISIBLE) { @@ -2335,6 +2349,11 @@ public class LauncherActivity extends AppCompatActivity implements } } + new Handler(Looper.getMainLooper()).post(() -> { + movingApp.setVisibility(VISIBLE); + movingApp = null; + }); + if (mWobblingCountDownTimer != null) { mWobblingCountDownTimer.cancel(); } @@ -2416,7 +2435,7 @@ public class LauncherActivity extends AppCompatActivity implements } else { GridLayout gridLayout = pages.get(getCurrentAppsPageNumber()); int index = gridLayout.indexOfChild(activeFolderView); - activeFolderView.setAnimation(null); + activeFolderView.clearAnimation(); removeUninstallIcon(activeFolderView); gridLayout.removeView(activeFolderView); addAppToGrid(gridLayout, view, index); @@ -2435,7 +2454,7 @@ public class LauncherActivity extends AppCompatActivity implements BlissFrameLayout view = prepareLauncherItem(item); if (folderFromDock) { int index = mDock.indexOfChild(activeFolderView); - activeFolderView.setAnimation(null); + activeFolderView.clearAnimation(); removeUninstallIcon(activeFolderView); mDock.removeView(activeFolderView); addAppToDock(view, index); @@ -2443,7 +2462,7 @@ public class LauncherActivity extends AppCompatActivity implements } else { GridLayout gridLayout = pages.get(getCurrentAppsPageNumber()); int index = gridLayout.indexOfChild(activeFolderView); - activeFolderView.setAnimation(null); + activeFolderView.clearAnimation(); removeUninstallIcon(activeFolderView); gridLayout.removeView(activeFolderView); addAppToGrid(gridLayout, view, index); @@ -2490,7 +2509,7 @@ public class LauncherActivity extends AppCompatActivity implements private void createOrUpdateFolder(boolean fromDock) { int index; - collidingApp.setAnimation(null); + collidingApp.clearAnimation(); if (fromDock) { index = mDock.indexOfChild(collidingApp); -- GitLab From f27a8d853822772b5a1f51a8c89e9faadc7dc009 Mon Sep 17 00:00:00 2001 From: Amit Kumar Date: Tue, 14 Apr 2020 06:07:38 +0530 Subject: [PATCH 2/2] Remove unnecessary logs --- .../e/blisslauncher/features/launcher/LauncherActivity.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java b/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java index f6612af937..0c3f0a86ac 100755 --- a/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java +++ b/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java @@ -2271,8 +2271,6 @@ public class LauncherActivity extends AppCompatActivity implements } } else if (dragEvent.getAction() == DragEvent.ACTION_DROP) { - Log.d(TAG, "onDrop"); - cleanupReorder(true); cleanupDockReorder(true); if (mFolderWindowContainer.getVisibility() != View.VISIBLE) { @@ -2286,11 +2284,8 @@ public class LauncherActivity extends AppCompatActivity implements addAppToGrid(gridLayout, movingApp); } } - Log.i(TAG, "onDrop: inside "+ (movingApp.getParent() == null)); - Log.i(TAG, "onDrop: inside "+ (movingApp.getVisibility())); movingApp.setVisibility(View.VISIBLE); - Log.i(TAG, "onDrop: inside "+ (movingApp.getVisibility())); makeAppWobble(movingApp, true, gridLayout.indexOfChild(movingApp)); } else { if (collidingApp.getParent().getParent() instanceof HorizontalPager) { -- GitLab