Loading proguard.flags +5 −1 Original line number Diff line number Diff line Loading @@ -66,3 +66,7 @@ public void setFastScrollerAlpha(float); public float getFastScrollerAlpha(); } -keep class com.android.launcher3.ButtonDropTarget { public int getTextColor(); } res/values/config.xml +0 −3 Original line number Diff line number Diff line Loading @@ -55,9 +55,6 @@ <integer name="config_appsCustomizeDragSlopeThreshold">150</integer> <!-- Workspace --> <!-- The transition duration for the background of the drop targets --> <integer name="config_dropTargetBgTransitionDuration">0</integer> <!-- The duration (in ms) of the fade animation on the object outlines, used when we are dragging objects around on the home screen. --> <integer name="config_dragOutlineFadeTime">900</integer> Loading src/com/android/launcher3/ButtonDropTarget.java +38 −11 Original line number Diff line number Diff line Loading @@ -16,14 +16,16 @@ package com.android.launcher3; import android.animation.ObjectAnimator; import android.annotation.TargetApi; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.PointF; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.drawable.TransitionDrawable; import android.os.Build; import android.util.AttributeSet; import android.view.View; import android.view.View.OnClickListener; Loading @@ -42,8 +44,6 @@ public abstract class ButtonDropTarget extends TextView private static int DRAG_VIEW_DROP_DURATION = 285; protected final int mTransitionDuration; protected Launcher mLauncher; private int mBottomDragPadding; protected TextView mText; Loading @@ -58,16 +58,15 @@ public abstract class ButtonDropTarget extends TextView protected ColorStateList mOriginalTextColor; protected TransitionDrawable mDrawable; private ObjectAnimator mCurrentColorAnim; public ButtonDropTarget(Context context, AttributeSet attrs) { this(context, attrs, 0); } public ButtonDropTarget(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); Resources r = getResources(); mTransitionDuration = r.getInteger(R.integer.config_dropTargetBgTransitionDuration); mBottomDragPadding = r.getDimensionPixelSize(R.dimen.drop_target_drag_padding); mBottomDragPadding = getResources().getDimensionPixelSize(R.dimen.drop_target_drag_padding); } @Override Loading Loading @@ -123,9 +122,14 @@ public abstract class ButtonDropTarget extends TextView @Override public final void onDragEnter(DragObject d) { d.dragView.setColor(mHoverColor); mDrawable.startTransition(mTransitionDuration); if (Utilities.isLmpOrAbove()) { mDrawable.startTransition(DragView.COLOR_CHANGE_DURATION); animateTextColor(mHoverColor); } else { mDrawable.startTransition(0); setTextColor(mHoverColor); } } @Override public void onDragOver(DragObject d) { Loading @@ -133,9 +137,24 @@ public abstract class ButtonDropTarget extends TextView } protected void resetHoverColor() { if (Utilities.isLmpOrAbove()) { mDrawable.reverseTransition(DragView.COLOR_CHANGE_DURATION); animateTextColor(mOriginalTextColor.getDefaultColor()); } else { mDrawable.resetTransition(); setTextColor(mOriginalTextColor); } } @TargetApi(Build.VERSION_CODES.LOLLIPOP) private void animateTextColor(int targetColor) { if (mCurrentColorAnim != null) { mCurrentColorAnim.cancel(); } mCurrentColorAnim = ObjectAnimator.ofArgb(this, "textColor", targetColor); mCurrentColorAnim.setDuration(DragView.COLOR_CHANGE_DURATION); mCurrentColorAnim.start(); } @Override public final void onDragExit(DragObject d) { Loading @@ -152,6 +171,10 @@ public abstract class ButtonDropTarget extends TextView public final void onDragStart(DragSource source, Object info, int dragAction) { mActive = supportsDrop(source, info); mDrawable.resetTransition(); if (mCurrentColorAnim != null) { mCurrentColorAnim.cancel(); mCurrentColorAnim = null; } setTextColor(mOriginalTextColor); ((ViewGroup) getParent()).setVisibility(mActive ? View.VISIBLE : View.GONE); } Loading Loading @@ -271,4 +294,8 @@ public abstract class ButtonDropTarget extends TextView LauncherAppState.getInstance().getAccessibilityDelegate() .handleAccessibleDrop(this, null, getAccessibilityDropConfirmation()); } public int getTextColor() { return getTextColors().getDefaultColor(); } } src/com/android/launcher3/DragView.java +55 −6 Original line number Diff line number Diff line Loading @@ -16,22 +16,30 @@ package com.android.launcher3; import android.animation.FloatArrayEvaluator; import android.animation.ValueAnimator; import android.animation.ValueAnimator.AnimatorUpdateListener; import android.annotation.TargetApi; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; import android.graphics.Paint; import android.graphics.Point; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.Rect; import android.os.Build; import android.view.View; import android.view.animation.DecelerateInterpolator; import com.android.launcher3.util.Thunk; import java.util.Arrays; public class DragView extends View { public static int COLOR_CHANGE_DURATION = 200; @Thunk static float sDragAlpha = 1f; private Bitmap mBitmap; Loading @@ -54,6 +62,9 @@ public class DragView extends View { // size. This is ignored for non-icons. private float mIntrinsicIconScale = 1f; private float[] mCurrentFilter; private ValueAnimator mFilterAnimator; /** * Construct the drag view. * <p> Loading Loading @@ -229,12 +240,51 @@ public class DragView extends View { mPaint = new Paint(Paint.FILTER_BITMAP_FLAG); } if (color != 0) { mPaint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP)); ColorMatrix m1 = new ColorMatrix(); m1.setSaturation(0); ColorMatrix m2 = new ColorMatrix(); m2.setScale(Color.red(color) / 255f, Color.green(color) / 255f, Color.blue(color) / 255f, Color.alpha(color) / 255f); m1.postConcat(m2); if (Utilities.isLmpOrAbove()) { animateFilterTo(m1.getArray()); } else { mPaint.setColorFilter(new ColorMatrixColorFilter(m1)); invalidate(); } } else { if (!Utilities.isLmpOrAbove() || mCurrentFilter == null) { mPaint.setColorFilter(null); invalidate(); } else { animateFilterTo(new ColorMatrix().getArray()); } } } @TargetApi(Build.VERSION_CODES.LOLLIPOP) private void animateFilterTo(float[] targetFilter) { float[] oldFilter = mCurrentFilter == null ? new ColorMatrix().getArray() : mCurrentFilter; mCurrentFilter = Arrays.copyOf(oldFilter, oldFilter.length); if (mFilterAnimator != null) { mFilterAnimator.cancel(); } mFilterAnimator = ValueAnimator.ofObject(new FloatArrayEvaluator(mCurrentFilter), oldFilter, targetFilter); mFilterAnimator.setDuration(COLOR_CHANGE_DURATION); mFilterAnimator.addUpdateListener(new AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { mPaint.setColorFilter(new ColorMatrixColorFilter(mCurrentFilter)); invalidate(); } }); mFilterAnimator.start(); } public boolean hasDrawn() { return mHasDrawn; Loading Loading @@ -301,4 +351,3 @@ public class DragView extends View { } } } Loading
proguard.flags +5 −1 Original line number Diff line number Diff line Loading @@ -66,3 +66,7 @@ public void setFastScrollerAlpha(float); public float getFastScrollerAlpha(); } -keep class com.android.launcher3.ButtonDropTarget { public int getTextColor(); }
res/values/config.xml +0 −3 Original line number Diff line number Diff line Loading @@ -55,9 +55,6 @@ <integer name="config_appsCustomizeDragSlopeThreshold">150</integer> <!-- Workspace --> <!-- The transition duration for the background of the drop targets --> <integer name="config_dropTargetBgTransitionDuration">0</integer> <!-- The duration (in ms) of the fade animation on the object outlines, used when we are dragging objects around on the home screen. --> <integer name="config_dragOutlineFadeTime">900</integer> Loading
src/com/android/launcher3/ButtonDropTarget.java +38 −11 Original line number Diff line number Diff line Loading @@ -16,14 +16,16 @@ package com.android.launcher3; import android.animation.ObjectAnimator; import android.annotation.TargetApi; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.PointF; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.drawable.TransitionDrawable; import android.os.Build; import android.util.AttributeSet; import android.view.View; import android.view.View.OnClickListener; Loading @@ -42,8 +44,6 @@ public abstract class ButtonDropTarget extends TextView private static int DRAG_VIEW_DROP_DURATION = 285; protected final int mTransitionDuration; protected Launcher mLauncher; private int mBottomDragPadding; protected TextView mText; Loading @@ -58,16 +58,15 @@ public abstract class ButtonDropTarget extends TextView protected ColorStateList mOriginalTextColor; protected TransitionDrawable mDrawable; private ObjectAnimator mCurrentColorAnim; public ButtonDropTarget(Context context, AttributeSet attrs) { this(context, attrs, 0); } public ButtonDropTarget(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); Resources r = getResources(); mTransitionDuration = r.getInteger(R.integer.config_dropTargetBgTransitionDuration); mBottomDragPadding = r.getDimensionPixelSize(R.dimen.drop_target_drag_padding); mBottomDragPadding = getResources().getDimensionPixelSize(R.dimen.drop_target_drag_padding); } @Override Loading Loading @@ -123,9 +122,14 @@ public abstract class ButtonDropTarget extends TextView @Override public final void onDragEnter(DragObject d) { d.dragView.setColor(mHoverColor); mDrawable.startTransition(mTransitionDuration); if (Utilities.isLmpOrAbove()) { mDrawable.startTransition(DragView.COLOR_CHANGE_DURATION); animateTextColor(mHoverColor); } else { mDrawable.startTransition(0); setTextColor(mHoverColor); } } @Override public void onDragOver(DragObject d) { Loading @@ -133,9 +137,24 @@ public abstract class ButtonDropTarget extends TextView } protected void resetHoverColor() { if (Utilities.isLmpOrAbove()) { mDrawable.reverseTransition(DragView.COLOR_CHANGE_DURATION); animateTextColor(mOriginalTextColor.getDefaultColor()); } else { mDrawable.resetTransition(); setTextColor(mOriginalTextColor); } } @TargetApi(Build.VERSION_CODES.LOLLIPOP) private void animateTextColor(int targetColor) { if (mCurrentColorAnim != null) { mCurrentColorAnim.cancel(); } mCurrentColorAnim = ObjectAnimator.ofArgb(this, "textColor", targetColor); mCurrentColorAnim.setDuration(DragView.COLOR_CHANGE_DURATION); mCurrentColorAnim.start(); } @Override public final void onDragExit(DragObject d) { Loading @@ -152,6 +171,10 @@ public abstract class ButtonDropTarget extends TextView public final void onDragStart(DragSource source, Object info, int dragAction) { mActive = supportsDrop(source, info); mDrawable.resetTransition(); if (mCurrentColorAnim != null) { mCurrentColorAnim.cancel(); mCurrentColorAnim = null; } setTextColor(mOriginalTextColor); ((ViewGroup) getParent()).setVisibility(mActive ? View.VISIBLE : View.GONE); } Loading Loading @@ -271,4 +294,8 @@ public abstract class ButtonDropTarget extends TextView LauncherAppState.getInstance().getAccessibilityDelegate() .handleAccessibleDrop(this, null, getAccessibilityDropConfirmation()); } public int getTextColor() { return getTextColors().getDefaultColor(); } }
src/com/android/launcher3/DragView.java +55 −6 Original line number Diff line number Diff line Loading @@ -16,22 +16,30 @@ package com.android.launcher3; import android.animation.FloatArrayEvaluator; import android.animation.ValueAnimator; import android.animation.ValueAnimator.AnimatorUpdateListener; import android.annotation.TargetApi; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; import android.graphics.Paint; import android.graphics.Point; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.Rect; import android.os.Build; import android.view.View; import android.view.animation.DecelerateInterpolator; import com.android.launcher3.util.Thunk; import java.util.Arrays; public class DragView extends View { public static int COLOR_CHANGE_DURATION = 200; @Thunk static float sDragAlpha = 1f; private Bitmap mBitmap; Loading @@ -54,6 +62,9 @@ public class DragView extends View { // size. This is ignored for non-icons. private float mIntrinsicIconScale = 1f; private float[] mCurrentFilter; private ValueAnimator mFilterAnimator; /** * Construct the drag view. * <p> Loading Loading @@ -229,12 +240,51 @@ public class DragView extends View { mPaint = new Paint(Paint.FILTER_BITMAP_FLAG); } if (color != 0) { mPaint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP)); ColorMatrix m1 = new ColorMatrix(); m1.setSaturation(0); ColorMatrix m2 = new ColorMatrix(); m2.setScale(Color.red(color) / 255f, Color.green(color) / 255f, Color.blue(color) / 255f, Color.alpha(color) / 255f); m1.postConcat(m2); if (Utilities.isLmpOrAbove()) { animateFilterTo(m1.getArray()); } else { mPaint.setColorFilter(new ColorMatrixColorFilter(m1)); invalidate(); } } else { if (!Utilities.isLmpOrAbove() || mCurrentFilter == null) { mPaint.setColorFilter(null); invalidate(); } else { animateFilterTo(new ColorMatrix().getArray()); } } } @TargetApi(Build.VERSION_CODES.LOLLIPOP) private void animateFilterTo(float[] targetFilter) { float[] oldFilter = mCurrentFilter == null ? new ColorMatrix().getArray() : mCurrentFilter; mCurrentFilter = Arrays.copyOf(oldFilter, oldFilter.length); if (mFilterAnimator != null) { mFilterAnimator.cancel(); } mFilterAnimator = ValueAnimator.ofObject(new FloatArrayEvaluator(mCurrentFilter), oldFilter, targetFilter); mFilterAnimator.setDuration(COLOR_CHANGE_DURATION); mFilterAnimator.addUpdateListener(new AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { mPaint.setColorFilter(new ColorMatrixColorFilter(mCurrentFilter)); invalidate(); } }); mFilterAnimator.start(); } public boolean hasDrawn() { return mHasDrawn; Loading Loading @@ -301,4 +351,3 @@ public class DragView extends View { } } }