Merge "Cancel badge scale anim when setting new badge scale" into ub-launcher3-master
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.android.launcher3;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.content.Context;
|
||||
import android.content.res.ColorStateList;
|
||||
@@ -112,10 +114,13 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,
|
||||
@ViewDebug.ExportedProperty(category = "launcher")
|
||||
private float mTextAlpha = 1;
|
||||
|
||||
@ViewDebug.ExportedProperty(category = "launcher")
|
||||
private BadgeInfo mBadgeInfo;
|
||||
private BadgeRenderer mBadgeRenderer;
|
||||
private int mBadgeColor;
|
||||
@ViewDebug.ExportedProperty(category = "launcher")
|
||||
private float mBadgeScale;
|
||||
private Animator mBadgeScaleAnim;
|
||||
private boolean mForceHideBadge;
|
||||
private Point mTempSpaceForBadgeOffset = new Point();
|
||||
private Rect mTempIconBounds = new Rect();
|
||||
@@ -188,10 +193,29 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,
|
||||
public void reset() {
|
||||
mBadgeInfo = null;
|
||||
mBadgeColor = Color.TRANSPARENT;
|
||||
cancelBadgeScaleAnim();
|
||||
mBadgeScale = 0f;
|
||||
mForceHideBadge = false;
|
||||
}
|
||||
|
||||
private void cancelBadgeScaleAnim() {
|
||||
if (mBadgeScaleAnim != null) {
|
||||
mBadgeScaleAnim.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
private void animateBadgeScale(float... badgeScales) {
|
||||
cancelBadgeScaleAnim();
|
||||
mBadgeScaleAnim = ObjectAnimator.ofFloat(this, BADGE_SCALE_PROPERTY, badgeScales);
|
||||
mBadgeScaleAnim.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mBadgeScaleAnim = null;
|
||||
}
|
||||
});
|
||||
mBadgeScaleAnim.start();
|
||||
}
|
||||
|
||||
public void applyFromShortcutInfo(ShortcutInfo info) {
|
||||
applyFromShortcutInfo(info, false);
|
||||
}
|
||||
@@ -378,7 +402,7 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,
|
||||
if (forceHideBadge) {
|
||||
invalidate();
|
||||
} else if (hasBadge()) {
|
||||
ObjectAnimator.ofFloat(this, BADGE_SCALE_PROPERTY, 0, 1).start();
|
||||
animateBadgeScale(0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -524,8 +548,9 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,
|
||||
if (wasBadged || isBadged) {
|
||||
// Animate when a badge is first added or when it is removed.
|
||||
if (animate && (wasBadged ^ isBadged) && isShown()) {
|
||||
ObjectAnimator.ofFloat(this, BADGE_SCALE_PROPERTY, newBadgeScale).start();
|
||||
animateBadgeScale(newBadgeScale);
|
||||
} else {
|
||||
cancelBadgeScaleAnim();
|
||||
mBadgeScale = newBadgeScale;
|
||||
invalidate();
|
||||
}
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.android.launcher3.badge;
|
||||
|
||||
import android.view.ViewDebug;
|
||||
|
||||
import com.android.launcher3.Utilities;
|
||||
|
||||
/**
|
||||
@@ -56,6 +58,7 @@ public class FolderBadgeInfo extends BadgeInfo {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ViewDebug.ExportedProperty(category = "launcher")
|
||||
public boolean hasBadge() {
|
||||
return mNumNotifications > 0;
|
||||
}
|
||||
|
||||
@@ -644,7 +644,7 @@ public class Folder extends AbstractFloatingView implements DragSource,
|
||||
mFolderIcon.mBackground.animateBackgroundStroke();
|
||||
mFolderIcon.onFolderClose(mContent.getCurrentPage());
|
||||
if (mFolderIcon.hasBadge()) {
|
||||
mFolderIcon.createBadgeScaleAnimator(0f, 1f).start();
|
||||
mFolderIcon.animateBadgeScale(0f, 1f);
|
||||
}
|
||||
mFolderIcon.requestFocus();
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import static com.android.launcher3.folder.ClippedFolderIconLayoutRule.MAX_NUM_I
|
||||
import static com.android.launcher3.folder.PreviewItemManager.INITIAL_ITEM_ANIMATION_DURATION;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
@@ -32,6 +33,7 @@ import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewConfiguration;
|
||||
import android.view.ViewDebug;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
@@ -106,9 +108,12 @@ public class FolderIcon extends FrameLayout implements FolderListener {
|
||||
|
||||
private Alarm mOpenAlarm = new Alarm();
|
||||
|
||||
@ViewDebug.ExportedProperty(category = "launcher", deepExport = true)
|
||||
private FolderBadgeInfo mBadgeInfo = new FolderBadgeInfo();
|
||||
private BadgeRenderer mBadgeRenderer;
|
||||
@ViewDebug.ExportedProperty(category = "launcher")
|
||||
private float mBadgeScale;
|
||||
private Animator mBadgeScaleAnim;
|
||||
private Point mTempSpaceForBadgeOffset = new Point();
|
||||
|
||||
private static final Property<FolderIcon, Float> BADGE_SCALE_PROPERTY
|
||||
@@ -393,15 +398,30 @@ public class FolderIcon extends FrameLayout implements FolderListener {
|
||||
float newBadgeScale = isBadged ? 1f : 0f;
|
||||
// Animate when a badge is first added or when it is removed.
|
||||
if ((wasBadged ^ isBadged) && isShown()) {
|
||||
createBadgeScaleAnimator(newBadgeScale).start();
|
||||
animateBadgeScale(newBadgeScale);
|
||||
} else {
|
||||
cancelBadgeScaleAnim();
|
||||
mBadgeScale = newBadgeScale;
|
||||
invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
public Animator createBadgeScaleAnimator(float... badgeScales) {
|
||||
return ObjectAnimator.ofFloat(this, BADGE_SCALE_PROPERTY, badgeScales);
|
||||
private void cancelBadgeScaleAnim() {
|
||||
if (mBadgeScaleAnim != null) {
|
||||
mBadgeScaleAnim.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
public void animateBadgeScale(float... badgeScales) {
|
||||
cancelBadgeScaleAnim();
|
||||
mBadgeScaleAnim = ObjectAnimator.ofFloat(this, BADGE_SCALE_PROPERTY, badgeScales);
|
||||
mBadgeScaleAnim.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mBadgeScaleAnim = null;
|
||||
}
|
||||
});
|
||||
mBadgeScaleAnim.start();
|
||||
}
|
||||
|
||||
public boolean hasBadge() {
|
||||
|
||||
Reference in New Issue
Block a user