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

Commit 0f22af99 authored by Selim Cinek's avatar Selim Cinek Committed by Android Git Automerger
Browse files

am aed002f8: Merge "Fixed a bug with the notification appear animation" into lmp-mr1-dev

* commit 'aed002f8':
  Fixed a bug with the notification appear animation
parents 0bda775b aed002f8
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -23,10 +23,8 @@ import android.graphics.drawable.Drawable;
import android.service.notification.StatusBarNotification;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewStub;
import android.view.accessibility.AccessibilityEvent;

import android.widget.ImageView;
import com.android.systemui.R;

+40 −2
Original line number Diff line number Diff line
@@ -27,11 +27,11 @@ import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewTreeObserver;
import android.view.animation.Interpolator;
import android.view.animation.LinearInterpolator;
import android.widget.FrameLayout;
import android.widget.ImageView;

import com.android.systemui.R;

/**
@@ -60,6 +60,16 @@ public class NotificationContentView extends FrameLayout {
    private boolean mDark;

    private final Paint mFadePaint = new Paint();
    private boolean mAnimate;
    private ViewTreeObserver.OnPreDrawListener mEnableAnimationPredrawListener
            = new ViewTreeObserver.OnPreDrawListener() {
        @Override
        public boolean onPreDraw() {
            mAnimate = true;
            getViewTreeObserver().removeOnPreDrawListener(this);
            return true;
        }
    };

    public NotificationContentView(Context context, AttributeSet attrs) {
        super(context, attrs);
@@ -73,6 +83,12 @@ public class NotificationContentView extends FrameLayout {
        updateClipping();
    }

    @Override
    protected void onFinishInflate() {
        super.onFinishInflate();
        updateVisibility();
    }

    public void reset() {
        if (mContractedChild != null) {
            mContractedChild.animate().cancel();
@@ -117,9 +133,31 @@ public class NotificationContentView extends FrameLayout {
        selectLayout(false /* animate */, true /* force */);
    }

    @Override
    protected void onVisibilityChanged(View changedView, int visibility) {
        super.onVisibilityChanged(changedView, visibility);
        updateVisibility();
    }

    private void updateVisibility() {
        setVisible(isShown());
    }

    private void setVisible(final boolean isVisible) {
        if (isVisible) {

            // We only animate if we are drawn at least once, otherwise the view might animate when
            // it's shown the first time
            getViewTreeObserver().addOnPreDrawListener(mEnableAnimationPredrawListener);
        } else {
            getViewTreeObserver().removeOnPreDrawListener(mEnableAnimationPredrawListener);
            mAnimate = false;
        }
    }

    public void setActualHeight(int actualHeight) {
        mActualHeight = actualHeight;
        selectLayout(true /* animate */, false /* force */);
        selectLayout(mAnimate /* animate */, false /* force */);
        updateClipping();
    }