Merge "Fix a couple polish bugs with new folder previews" into ub-launcher3-calgary

This commit is contained in:
Adam Cohen
2016-04-01 21:51:16 +00:00
committed by Android (Google) Code Review
3 changed files with 37 additions and 16 deletions
+10 -5
View File
@@ -510,6 +510,9 @@ public class CellLayout extends ViewGroup implements BubbleTextShadowHandler {
canvas.save(); canvas.save();
canvas.translate(mTempLocation[0], mTempLocation[1]); canvas.translate(mTempLocation[0], mTempLocation[1]);
bg.drawBackground(canvas, mFolderBgPaint); bg.drawBackground(canvas, mFolderBgPaint);
if (!bg.isClipping) {
bg.drawBackgroundStroke(canvas, mFolderBgPaint);
}
canvas.restore(); canvas.restore();
} }
@@ -529,11 +532,13 @@ public class CellLayout extends ViewGroup implements BubbleTextShadowHandler {
for (int i = 0; i < mFolderBackgrounds.size(); i++) { for (int i = 0; i < mFolderBackgrounds.size(); i++) {
FolderIcon.PreviewBackground bg = mFolderBackgrounds.get(i); FolderIcon.PreviewBackground bg = mFolderBackgrounds.get(i);
cellToPoint(bg.delegateCellX, bg.delegateCellY, mTempLocation); if (bg.isClipping) {
canvas.save(); cellToPoint(bg.delegateCellX, bg.delegateCellY, mTempLocation);
canvas.translate(mTempLocation[0], mTempLocation[1]); canvas.save();
bg.drawBackgroundStroke(canvas, mFolderBgPaint); canvas.translate(mTempLocation[0], mTempLocation[1]);
canvas.restore(); bg.drawBackgroundStroke(canvas, mFolderBgPaint);
canvas.restore();
}
} }
} }
+11 -3
View File
@@ -219,7 +219,7 @@ public class Workspace extends PagedView
public static final int REORDER_TIMEOUT = 350; public static final int REORDER_TIMEOUT = 350;
private final Alarm mFolderCreationAlarm = new Alarm(); private final Alarm mFolderCreationAlarm = new Alarm();
private final Alarm mReorderAlarm = new Alarm(); private final Alarm mReorderAlarm = new Alarm();
private FolderIcon.PreviewBackground mFolderCreateBg = new FolderIcon.PreviewBackground(); private FolderIcon.PreviewBackground mFolderCreateBg;
private FolderIcon mDragOverFolderIcon = null; private FolderIcon mDragOverFolderIcon = null;
private boolean mCreateUserFolderOnDrop = false; private boolean mCreateUserFolderOnDrop = false;
private boolean mAddToExistingFolderOnDrop = false; private boolean mAddToExistingFolderOnDrop = false;
@@ -2878,7 +2878,9 @@ public class Workspace extends PagedView
} }
private void cleanupFolderCreation() { private void cleanupFolderCreation() {
mFolderCreateBg.animateToRest(); if (mFolderCreateBg != null) {
mFolderCreateBg.animateToRest();
}
mFolderCreationAlarm.setOnAlarmListener(null); mFolderCreationAlarm.setOnAlarmListener(null);
mFolderCreationAlarm.cancelAlarm(); mFolderCreationAlarm.cancelAlarm();
} }
@@ -3182,6 +3184,8 @@ public class Workspace extends PagedView
int cellX; int cellX;
int cellY; int cellY;
FolderIcon.PreviewBackground bg = new FolderIcon.PreviewBackground();
public FolderCreationAlarmListener(CellLayout layout, int cellX, int cellY) { public FolderCreationAlarmListener(CellLayout layout, int cellX, int cellY) {
this.layout = layout; this.layout = layout;
this.cellX = cellX; this.cellX = cellX;
@@ -3190,11 +3194,15 @@ public class Workspace extends PagedView
DeviceProfile grid = mLauncher.getDeviceProfile(); DeviceProfile grid = mLauncher.getDeviceProfile();
BubbleTextView cell = (BubbleTextView) layout.getChildAt(cellX, cellY); BubbleTextView cell = (BubbleTextView) layout.getChildAt(cellX, cellY);
mFolderCreateBg.setup(getResources().getDisplayMetrics(), grid, null, bg.setup(getResources().getDisplayMetrics(), grid, null,
cell.getMeasuredWidth(), cell.getPaddingTop()); cell.getMeasuredWidth(), cell.getPaddingTop());
// The full preview background should appear behind the icon
bg.isClipping = false;
} }
public void onAlarm(Alarm alarm) { public void onAlarm(Alarm alarm) {
mFolderCreateBg = bg;
mFolderCreateBg.animateToAccept(layout, cellX, cellY); mFolderCreateBg.animateToAccept(layout, cellX, cellY);
layout.clearDragOutlines(); layout.clearDragOutlines();
setDragMode(DRAG_MODE_CREATE_FOLDER); setDragMode(DRAG_MODE_CREATE_FOLDER);
@@ -492,12 +492,16 @@ public class FolderIcon extends FrameLayout implements FolderListener {
canvas.restore(); canvas.restore();
} }
/**
* This object represents a FolderIcon preview background. It stores drawing / measurement
* information, handles drawing, and animation (accept state <--> rest state).
*/
public static class PreviewBackground { public static class PreviewBackground {
private float mScale = 1f; private float mScale = 1f;
private float mColorMultiplier = 1f; private float mColorMultiplier = 1f;
private Path mClipPath = new Path(); private Path mClipPath = new Path();
private int mStrokeWidth; private int mStrokeWidth;
private View mInvalidateDeligate; private View mInvalidateDelegate;
public int previewSize; public int previewSize;
private int basePreviewOffsetX; private int basePreviewOffsetX;
@@ -507,6 +511,10 @@ public class FolderIcon extends FrameLayout implements FolderListener {
public int delegateCellX; public int delegateCellX;
public int delegateCellY; public int delegateCellY;
// When the PreviewBackground is drawn under an icon (for creating a folder) the border
// should not occlude the icon
public boolean isClipping = true;
// Drawing / animation configurations // Drawing / animation configurations
private static final float ACCEPT_SCALE_FACTOR = 1.25f; private static final float ACCEPT_SCALE_FACTOR = 1.25f;
private static final float ACCEPT_COLOR_MULTIPLIER = 1.5f; private static final float ACCEPT_COLOR_MULTIPLIER = 1.5f;
@@ -519,9 +527,9 @@ public class FolderIcon extends FrameLayout implements FolderListener {
ValueAnimator mScaleAnimator; ValueAnimator mScaleAnimator;
public void setup(DisplayMetrics dm, DeviceProfile grid, View invalidateDeligate, public void setup(DisplayMetrics dm, DeviceProfile grid, View invalidateDelegate,
int availableSpace, int topPadding) { int availableSpace, int topPadding) {
mInvalidateDeligate = invalidateDeligate; mInvalidateDelegate = invalidateDelegate;
final int previewSize = grid.folderIconSizePx; final int previewSize = grid.folderIconSizePx;
final int previewPadding = grid.folderIconPreviewPadding; final int previewPadding = grid.folderIconPreviewPadding;
@@ -557,8 +565,8 @@ public class FolderIcon extends FrameLayout implements FolderListener {
mClipPath.reset(); mClipPath.reset();
mClipPath.addCircle(radius, radius, radius, Path.Direction.CW); mClipPath.addCircle(radius, radius, radius, Path.Direction.CW);
if (mInvalidateDeligate != null) { if (mInvalidateDelegate != null) {
mInvalidateDeligate.invalidate(); mInvalidateDelegate.invalidate();
} }
if (mDrawingDelegate != null) { if (mDrawingDelegate != null) {
@@ -566,8 +574,8 @@ public class FolderIcon extends FrameLayout implements FolderListener {
} }
} }
void setInvalidateDeligate(View invalidateDeligate) { void setInvalidateDelegate(View invalidateDelegate) {
mInvalidateDeligate = invalidateDeligate; mInvalidateDelegate = invalidateDelegate;
invalidate(); invalidate();
} }
@@ -742,7 +750,7 @@ public class FolderIcon extends FrameLayout implements FolderListener {
public void setFolderBackground(PreviewBackground bg) { public void setFolderBackground(PreviewBackground bg) {
mBackground = bg; mBackground = bg;
mBackground.setInvalidateDeligate(this); mBackground.setInvalidateDelegate(this);
} }
@Override @Override