Merge "Fixed a bug with the notification appear animation" into lmp-mr1-dev
This commit is contained in:
@@ -23,10 +23,8 @@ import android.graphics.drawable.Drawable;
|
|||||||
import android.service.notification.StatusBarNotification;
|
import android.service.notification.StatusBarNotification;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.view.ViewStub;
|
import android.view.ViewStub;
|
||||||
import android.view.accessibility.AccessibilityEvent;
|
import android.view.accessibility.AccessibilityEvent;
|
||||||
|
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
|
|
||||||
|
|||||||
@@ -27,11 +27,11 @@ import android.graphics.Rect;
|
|||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ViewTreeObserver;
|
||||||
import android.view.animation.Interpolator;
|
import android.view.animation.Interpolator;
|
||||||
import android.view.animation.LinearInterpolator;
|
import android.view.animation.LinearInterpolator;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -60,6 +60,16 @@ public class NotificationContentView extends FrameLayout {
|
|||||||
private boolean mDark;
|
private boolean mDark;
|
||||||
|
|
||||||
private final Paint mFadePaint = new Paint();
|
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) {
|
public NotificationContentView(Context context, AttributeSet attrs) {
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
@@ -73,6 +83,12 @@ public class NotificationContentView extends FrameLayout {
|
|||||||
updateClipping();
|
updateClipping();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onFinishInflate() {
|
||||||
|
super.onFinishInflate();
|
||||||
|
updateVisibility();
|
||||||
|
}
|
||||||
|
|
||||||
public void reset() {
|
public void reset() {
|
||||||
if (mContractedChild != null) {
|
if (mContractedChild != null) {
|
||||||
mContractedChild.animate().cancel();
|
mContractedChild.animate().cancel();
|
||||||
@@ -117,9 +133,31 @@ public class NotificationContentView extends FrameLayout {
|
|||||||
selectLayout(false /* animate */, true /* force */);
|
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) {
|
public void setActualHeight(int actualHeight) {
|
||||||
mActualHeight = actualHeight;
|
mActualHeight = actualHeight;
|
||||||
selectLayout(true /* animate */, false /* force */);
|
selectLayout(mAnimate /* animate */, false /* force */);
|
||||||
updateClipping();
|
updateClipping();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user