Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8cbe2db5 authored by Winson Chung's avatar Winson Chung
Browse files

End current key button animations when the button is hidden

- If the ripple animation doesn't finish before the view is hidden
  and not scheduled to draw, the render node animation will not
  finish, leaving the ripple visible until it is next touched.
  Instead, we should just end existing animations whenever the
  buttons are made invisible

Bug: 168422286
Test: Extend ripple duration beyond the dismiss nav bar window
      duration and verify bug happens without change and is fixed
      with the change

Change-Id: If3a38bcd47cc7665ee42c66f688cf306c7fab44c
Merged-In: If3a38bcd47cc7665ee42c66f688cf306c7fab44c
(cherry picked from commit df7e471a)
parent 0bf48315
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -171,6 +171,24 @@ public class KeyButtonDrawable extends Drawable {
        }
    }

    @Override
    public boolean setVisible(boolean visible, boolean restart) {
        boolean changed = super.setVisible(visible, restart);
        if (changed) {
            // End any existing animations when the visibility changes
            jumpToCurrentState();
        }
        return changed;
    }

    @Override
    public void jumpToCurrentState() {
        super.jumpToCurrentState();
        if (mAnimatedDrawable != null) {
            mAnimatedDrawable.jumpToCurrentState();
        }
    }

    @Override
    public void setAlpha(int alpha) {
        mState.mAlpha = alpha;
+10 −0
Original line number Diff line number Diff line
@@ -224,6 +224,16 @@ public class KeyButtonRipple extends Drawable {
        }
    }

    @Override
    public boolean setVisible(boolean visible, boolean restart) {
        boolean changed = super.setVisible(visible, restart);
        if (changed) {
            // End any existing animations when the visibility changes
            jumpToCurrentState();
        }
        return changed;
    }

    @Override
    public void jumpToCurrentState() {
        endAnimations("jumpToCurrentState", false /* cancel */);