From 3ba84e8ed4e7553868fa7d737b8c000123cc998c Mon Sep 17 00:00:00 2001 From: Bruce Kim Date: Wed, 25 Sep 2019 16:50:49 +0900 Subject: [PATCH 1/6] Fix disappearing pop icon --- .../io/mattcarroll/hover/FloatingTab.java | 44 ++++++++++++++----- .../hover/HoverViewStateCollapsed.java | 1 + 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/hover/src/main/java/io/mattcarroll/hover/FloatingTab.java b/hover/src/main/java/io/mattcarroll/hover/FloatingTab.java index 7785207..19c6ac7 100644 --- a/hover/src/main/java/io/mattcarroll/hover/FloatingTab.java +++ b/hover/src/main/java/io/mattcarroll/hover/FloatingTab.java @@ -52,6 +52,8 @@ class FloatingTab extends HoverFrameLayout { private int mTabSize; private View mTabView; private Dock mDock; + public AnimatorSet animatorSetDisappear; + public AnimatorSet animatorSetAppear; public FloatingTab(@NonNull Context context, @NonNull String tabId) { super(context); @@ -100,15 +102,16 @@ public void enableDebugMode(boolean debugMode) { } public void appear(@Nullable final Runnable onAppeared) { - AnimatorSet animatorSet = new AnimatorSet(); + cancelAnimatorSetAppearIfNeeded(); + animatorSetAppear = new AnimatorSet(); ObjectAnimator scaleX = ObjectAnimator.ofFloat(this, "scaleX", 0.0f, 1.0f); ObjectAnimator scaleY = ObjectAnimator.ofFloat(this, "scaleY", 0.0f, 1.0f); - animatorSet.setDuration(APPEARING_ANIMATION_DURATION); - animatorSet.setInterpolator(new OvershootInterpolator()); - animatorSet.playTogether(scaleX, scaleY); - animatorSet.start(); + animatorSetAppear.setDuration(APPEARING_ANIMATION_DURATION); + animatorSetAppear.setInterpolator(new OvershootInterpolator()); + animatorSetAppear.playTogether(scaleX, scaleY); + animatorSetAppear.start(); - animatorSet.addListener(new Animator.AnimatorListener() { + animatorSetAppear.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @@ -133,18 +136,22 @@ public void onAnimationRepeat(Animator animation) { } public void appearImmediate() { + cancelAnimatorSetDisappearIfNeeded(); setVisibility(VISIBLE); + setScaleX(1.0f); + setScaleY(1.0f); } public void disappear(@Nullable final Runnable onDisappeared) { - AnimatorSet animatorSet = new AnimatorSet(); + cancelAnimatorSetDisappearIfNeeded(); + animatorSetDisappear = new AnimatorSet(); ObjectAnimator scaleX = ObjectAnimator.ofFloat(this, "scaleX", 0.0f); ObjectAnimator scaleY = ObjectAnimator.ofFloat(this, "scaleY", 0.0f); - animatorSet.setDuration(APPEARING_ANIMATION_DURATION); - animatorSet.playTogether(scaleX, scaleY); - animatorSet.start(); + animatorSetDisappear.setDuration(APPEARING_ANIMATION_DURATION); + animatorSetDisappear.playTogether(scaleX, scaleY); + animatorSetDisappear.start(); - animatorSet.addListener(new Animator.AnimatorListener() { + animatorSetDisappear.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @@ -169,9 +176,24 @@ public void onAnimationRepeat(Animator animation) { } public void disappearImmediate() { + cancelAnimatorSetAppearIfNeeded(); setVisibility(GONE); } + private void cancelAnimatorSetAppearIfNeeded() { + if (animatorSetAppear != null && animatorSetAppear.isRunning()) { + animatorSetAppear.cancel(); + animatorSetAppear = null; + } + } + + private void cancelAnimatorSetDisappearIfNeeded() { + if (animatorSetDisappear != null && animatorSetDisappear.isRunning()) { + animatorSetDisappear.cancel(); + animatorSetDisappear = null; + } + } + public void shrink() { mTabSize = getResources().getDimensionPixelSize(R.dimen.hover_tab_size_shrunk); updateSize(); diff --git a/hover/src/main/java/io/mattcarroll/hover/HoverViewStateCollapsed.java b/hover/src/main/java/io/mattcarroll/hover/HoverViewStateCollapsed.java index 0b0ad56..5029a92 100644 --- a/hover/src/main/java/io/mattcarroll/hover/HoverViewStateCollapsed.java +++ b/hover/src/main/java/io/mattcarroll/hover/HoverViewStateCollapsed.java @@ -91,6 +91,7 @@ public void run() { return; } if (wasFloatingTabVisible) { + mFloatingTab.appearImmediate(); sendToDock(); } else { moveToDock(); From e1adecd36b9617ffed6ee8b19688894573392e2f Mon Sep 17 00:00:00 2001 From: Bruce Kim Date: Wed, 25 Sep 2019 16:57:05 +0900 Subject: [PATCH 2/6] change variable names --- .../io/mattcarroll/hover/FloatingTab.java | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/hover/src/main/java/io/mattcarroll/hover/FloatingTab.java b/hover/src/main/java/io/mattcarroll/hover/FloatingTab.java index 19c6ac7..9c08e08 100644 --- a/hover/src/main/java/io/mattcarroll/hover/FloatingTab.java +++ b/hover/src/main/java/io/mattcarroll/hover/FloatingTab.java @@ -52,8 +52,8 @@ class FloatingTab extends HoverFrameLayout { private int mTabSize; private View mTabView; private Dock mDock; - public AnimatorSet animatorSetDisappear; - public AnimatorSet animatorSetAppear; + private AnimatorSet mAnimatorSetDisappear; + private AnimatorSet mAnimatorSetAppear; public FloatingTab(@NonNull Context context, @NonNull String tabId) { super(context); @@ -103,15 +103,15 @@ public void enableDebugMode(boolean debugMode) { public void appear(@Nullable final Runnable onAppeared) { cancelAnimatorSetAppearIfNeeded(); - animatorSetAppear = new AnimatorSet(); + mAnimatorSetAppear = new AnimatorSet(); ObjectAnimator scaleX = ObjectAnimator.ofFloat(this, "scaleX", 0.0f, 1.0f); ObjectAnimator scaleY = ObjectAnimator.ofFloat(this, "scaleY", 0.0f, 1.0f); - animatorSetAppear.setDuration(APPEARING_ANIMATION_DURATION); - animatorSetAppear.setInterpolator(new OvershootInterpolator()); - animatorSetAppear.playTogether(scaleX, scaleY); - animatorSetAppear.start(); + mAnimatorSetAppear.setDuration(APPEARING_ANIMATION_DURATION); + mAnimatorSetAppear.setInterpolator(new OvershootInterpolator()); + mAnimatorSetAppear.playTogether(scaleX, scaleY); + mAnimatorSetAppear.start(); - animatorSetAppear.addListener(new Animator.AnimatorListener() { + mAnimatorSetAppear.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @@ -144,14 +144,14 @@ public void appearImmediate() { public void disappear(@Nullable final Runnable onDisappeared) { cancelAnimatorSetDisappearIfNeeded(); - animatorSetDisappear = new AnimatorSet(); + mAnimatorSetDisappear = new AnimatorSet(); ObjectAnimator scaleX = ObjectAnimator.ofFloat(this, "scaleX", 0.0f); ObjectAnimator scaleY = ObjectAnimator.ofFloat(this, "scaleY", 0.0f); - animatorSetDisappear.setDuration(APPEARING_ANIMATION_DURATION); - animatorSetDisappear.playTogether(scaleX, scaleY); - animatorSetDisappear.start(); + mAnimatorSetDisappear.setDuration(APPEARING_ANIMATION_DURATION); + mAnimatorSetDisappear.playTogether(scaleX, scaleY); + mAnimatorSetDisappear.start(); - animatorSetDisappear.addListener(new Animator.AnimatorListener() { + mAnimatorSetDisappear.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @@ -181,16 +181,16 @@ public void disappearImmediate() { } private void cancelAnimatorSetAppearIfNeeded() { - if (animatorSetAppear != null && animatorSetAppear.isRunning()) { - animatorSetAppear.cancel(); - animatorSetAppear = null; + if (mAnimatorSetAppear != null && mAnimatorSetAppear.isRunning()) { + mAnimatorSetAppear.cancel(); + mAnimatorSetAppear = null; } } private void cancelAnimatorSetDisappearIfNeeded() { - if (animatorSetDisappear != null && animatorSetDisappear.isRunning()) { - animatorSetDisappear.cancel(); - animatorSetDisappear = null; + if (mAnimatorSetDisappear != null && mAnimatorSetDisappear.isRunning()) { + mAnimatorSetDisappear.cancel(); + mAnimatorSetDisappear = null; } } From 4f49a5a6237845d3a9fce9692e7d29383e3a6896 Mon Sep 17 00:00:00 2001 From: Bruce Kim Date: Wed, 25 Sep 2019 17:16:47 +0900 Subject: [PATCH 3/6] Fix crash --- .../java/io/mattcarroll/hover/HoverViewStateCollapsed.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hover/src/main/java/io/mattcarroll/hover/HoverViewStateCollapsed.java b/hover/src/main/java/io/mattcarroll/hover/HoverViewStateCollapsed.java index 5029a92..4215e3b 100644 --- a/hover/src/main/java/io/mattcarroll/hover/HoverViewStateCollapsed.java +++ b/hover/src/main/java/io/mattcarroll/hover/HoverViewStateCollapsed.java @@ -304,7 +304,11 @@ private void closeWithThrowingAnimation(Point targetPoint) { mFloatingTab.closeAnimation(targetPoint, new Runnable() { @Override public void run() { - activateDragger(); + try { + activateDragger(); + } catch (Exception e) { + // Do nothing. This may happen only on testing + } onClose(true); } }); From a28c20be47456a2126192e2469955b156a3cbe59 Mon Sep 17 00:00:00 2001 From: Bruce Kim Date: Wed, 25 Sep 2019 17:34:29 +0900 Subject: [PATCH 4/6] Revert "Fix crash" This reverts commit 4f49a5a6 --- .../java/io/mattcarroll/hover/HoverViewStateCollapsed.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/hover/src/main/java/io/mattcarroll/hover/HoverViewStateCollapsed.java b/hover/src/main/java/io/mattcarroll/hover/HoverViewStateCollapsed.java index 4215e3b..5029a92 100644 --- a/hover/src/main/java/io/mattcarroll/hover/HoverViewStateCollapsed.java +++ b/hover/src/main/java/io/mattcarroll/hover/HoverViewStateCollapsed.java @@ -304,11 +304,7 @@ private void closeWithThrowingAnimation(Point targetPoint) { mFloatingTab.closeAnimation(targetPoint, new Runnable() { @Override public void run() { - try { - activateDragger(); - } catch (Exception e) { - // Do nothing. This may happen only on testing - } + activateDragger(); onClose(true); } }); From 943672d2fcc55240fe7d1419ea02781fb562bb96 Mon Sep 17 00:00:00 2001 From: Bruce Kim Date: Wed, 25 Sep 2019 17:35:14 +0900 Subject: [PATCH 5/6] Apply review - fix crash --- .../io/mattcarroll/hover/HoverViewStatePreviewed.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/hover/src/main/java/io/mattcarroll/hover/HoverViewStatePreviewed.java b/hover/src/main/java/io/mattcarroll/hover/HoverViewStatePreviewed.java index f032375..faedaa1 100644 --- a/hover/src/main/java/io/mattcarroll/hover/HoverViewStatePreviewed.java +++ b/hover/src/main/java/io/mattcarroll/hover/HoverViewStatePreviewed.java @@ -78,10 +78,12 @@ protected void onClose(final boolean userDropped) { @Override protected void activateDragger() { - ArrayList> list = new ArrayList<>(); - list.add(new Pair<>(mFloatingTab, mFloatingTabDragListener)); - list.add(new Pair<>(mMessageView, mDefaultMessageViewDragListener)); - mHoverView.mDragger.activate(list); + if (mHoverView != null && mHoverView.mDragger != null) { + ArrayList> list = new ArrayList<>(); + list.add(new Pair<>(mFloatingTab, mFloatingTabDragListener)); + list.add(new Pair<>(mMessageView, mDefaultMessageViewDragListener)); + mHoverView.mDragger.activate(list); + } } @Override From 27487363698782bafef66c527107ae09ddb26335 Mon Sep 17 00:00:00 2001 From: Bruce Kim Date: Wed, 25 Sep 2019 17:38:15 +0900 Subject: [PATCH 6/6] Fix crash --- .../io/mattcarroll/hover/HoverViewStateCollapsed.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hover/src/main/java/io/mattcarroll/hover/HoverViewStateCollapsed.java b/hover/src/main/java/io/mattcarroll/hover/HoverViewStateCollapsed.java index 5029a92..6c02f35 100644 --- a/hover/src/main/java/io/mattcarroll/hover/HoverViewStateCollapsed.java +++ b/hover/src/main/java/io/mattcarroll/hover/HoverViewStateCollapsed.java @@ -376,9 +376,11 @@ void moveFloatingTabTo(View floatingTab, @NonNull Point position) { } protected void activateDragger() { - ArrayList> list = new ArrayList<>(); - list.add(new Pair<>(mFloatingTab, mFloatingTabDragListener)); - mHoverView.mDragger.activate(list); + if (mHoverView != null && mHoverView.mDragger != null) { + ArrayList> list = new ArrayList<>(); + list.add(new Pair<>(mFloatingTab, mFloatingTabDragListener)); + mHoverView.mDragger.activate(list); + } } protected void deactivateDragger() {