Skip to content
This repository has been archived by the owner on Feb 9, 2023. It is now read-only.

Commit

Permalink
Merge pull request #34 from Buzzvil/fix/disppearing_pop_icon
Browse files Browse the repository at this point in the history
[CD-91] Fix disappearing pop icon
  • Loading branch information
realwind2048 committed Sep 25, 2019
2 parents 7557b85 + 2748736 commit 624d2a0
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 18 deletions.
44 changes: 33 additions & 11 deletions hover/src/main/java/io/mattcarroll/hover/FloatingTab.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ class FloatingTab extends HoverFrameLayout {
private int mTabSize;
private View mTabView;
private Dock mDock;
private AnimatorSet mAnimatorSetDisappear;
private AnimatorSet mAnimatorSetAppear;

public FloatingTab(@NonNull Context context, @NonNull String tabId) {
super(context);
Expand Down Expand Up @@ -100,15 +102,16 @@ public void enableDebugMode(boolean debugMode) {
}

public void appear(@Nullable final Runnable onAppeared) {
AnimatorSet animatorSet = new AnimatorSet();
cancelAnimatorSetAppearIfNeeded();
mAnimatorSetAppear = 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();
mAnimatorSetAppear.setDuration(APPEARING_ANIMATION_DURATION);
mAnimatorSetAppear.setInterpolator(new OvershootInterpolator());
mAnimatorSetAppear.playTogether(scaleX, scaleY);
mAnimatorSetAppear.start();

animatorSet.addListener(new Animator.AnimatorListener() {
mAnimatorSetAppear.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
Expand All @@ -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();
mAnimatorSetDisappear = 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();
mAnimatorSetDisappear.setDuration(APPEARING_ANIMATION_DURATION);
mAnimatorSetDisappear.playTogether(scaleX, scaleY);
mAnimatorSetDisappear.start();

animatorSet.addListener(new Animator.AnimatorListener() {
mAnimatorSetDisappear.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
Expand All @@ -169,9 +176,24 @@ public void onAnimationRepeat(Animator animation) {
}

public void disappearImmediate() {
cancelAnimatorSetAppearIfNeeded();
setVisibility(GONE);
}

private void cancelAnimatorSetAppearIfNeeded() {
if (mAnimatorSetAppear != null && mAnimatorSetAppear.isRunning()) {
mAnimatorSetAppear.cancel();
mAnimatorSetAppear = null;
}
}

private void cancelAnimatorSetDisappearIfNeeded() {
if (mAnimatorSetDisappear != null && mAnimatorSetDisappear.isRunning()) {
mAnimatorSetDisappear.cancel();
mAnimatorSetDisappear = null;
}
}

public void shrink() {
mTabSize = getResources().getDimensionPixelSize(R.dimen.hover_tab_size_shrunk);
updateSize();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ public void run() {
return;
}
if (wasFloatingTabVisible) {
mFloatingTab.appearImmediate();
sendToDock();
} else {
moveToDock();
Expand Down Expand Up @@ -375,9 +376,11 @@ void moveFloatingTabTo(View floatingTab, @NonNull Point position) {
}

protected void activateDragger() {
ArrayList<Pair<? extends HoverFrameLayout, ? extends BaseTouchController.TouchListener>> list = new ArrayList<>();
list.add(new Pair<>(mFloatingTab, mFloatingTabDragListener));
mHoverView.mDragger.activate(list);
if (mHoverView != null && mHoverView.mDragger != null) {
ArrayList<Pair<? extends HoverFrameLayout, ? extends BaseTouchController.TouchListener>> list = new ArrayList<>();
list.add(new Pair<>(mFloatingTab, mFloatingTabDragListener));
mHoverView.mDragger.activate(list);
}
}

protected void deactivateDragger() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,12 @@ protected void onClose(final boolean userDropped) {

@Override
protected void activateDragger() {
ArrayList<Pair<? extends HoverFrameLayout, ? extends BaseTouchController.TouchListener>> 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<Pair<? extends HoverFrameLayout, ? extends BaseTouchController.TouchListener>> list = new ArrayList<>();
list.add(new Pair<>(mFloatingTab, mFloatingTabDragListener));
list.add(new Pair<>(mMessageView, mDefaultMessageViewDragListener));
mHoverView.mDragger.activate(list);
}
}

@Override
Expand Down

0 comments on commit 624d2a0

Please sign in to comment.