summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/folder
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher3/folder')
-rw-r--r--src/com/android/launcher3/folder/FolderIcon.java17
-rw-r--r--src/com/android/launcher3/folder/PreviewBackground.java22
-rw-r--r--src/com/android/launcher3/folder/PreviewItemManager.java5
3 files changed, 33 insertions, 11 deletions
diff --git a/src/com/android/launcher3/folder/FolderIcon.java b/src/com/android/launcher3/folder/FolderIcon.java
index 84ec18410..6533b0463 100644
--- a/src/com/android/launcher3/folder/FolderIcon.java
+++ b/src/com/android/launcher3/folder/FolderIcon.java
@@ -440,6 +440,14 @@ public class FolderIcon extends FrameLayout implements FolderListener {
invalidate();
}
+ public PreviewBackground getFolderBackground() {
+ return mBackground;
+ }
+
+ public PreviewItemManager getPreviewItemManager() {
+ return mPreviewItemManager;
+ }
+
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
@@ -463,14 +471,11 @@ public class FolderIcon extends FrameLayout implements FolderListener {
} else {
saveCount = canvas.save(Canvas.CLIP_SAVE_FLAG);
if (mPreviewLayoutRule.clipToBackground()) {
- mBackground.clipCanvasSoftware(canvas, Region.Op.INTERSECT);
+ canvas.clipPath(mBackground.getClipPath(), Region.Op.INTERSECT);
}
}
- // The items are drawn in coordinates relative to the preview offset
- canvas.translate(mBackground.basePreviewOffsetX, mBackground.basePreviewOffsetY);
mPreviewItemManager.draw(canvas);
- canvas.translate(-mBackground.basePreviewOffsetX, -mBackground.basePreviewOffsetY);
if (mPreviewLayoutRule.clipToBackground() && canvas.isHardwareAccelerated()) {
mBackground.clipCanvasHardware(canvas);
@@ -481,6 +486,10 @@ public class FolderIcon extends FrameLayout implements FolderListener {
mBackground.drawBackgroundStroke(canvas);
}
+ drawBadge(canvas);
+ }
+
+ public void drawBadge(Canvas canvas) {
if ((mBadgeInfo != null && mBadgeInfo.hasBadge()) || mBadgeScale > 0) {
int offsetX = mBackground.getOffsetX();
int offsetY = mBackground.getOffsetY();
diff --git a/src/com/android/launcher3/folder/PreviewBackground.java b/src/com/android/launcher3/folder/PreviewBackground.java
index 61490eee8..eba5d984d 100644
--- a/src/com/android/launcher3/folder/PreviewBackground.java
+++ b/src/com/android/launcher3/folder/PreviewBackground.java
@@ -195,19 +195,28 @@ public class PreviewBackground {
invalidate();
}
+ public int getBgColor() {
+ int alpha = (int) Math.min(MAX_BG_OPACITY, BG_OPACITY * mColorMultiplier);
+ return ColorUtils.setAlphaComponent(mBgColor, alpha);
+ }
+
public void drawBackground(Canvas canvas) {
mPaint.setStyle(Paint.Style.FILL);
- int alpha = (int) Math.min(MAX_BG_OPACITY, BG_OPACITY * mColorMultiplier);
- mPaint.setColor(ColorUtils.setAlphaComponent(mBgColor, alpha));
+ mPaint.setColor(getBgColor());
drawCircle(canvas, 0 /* deltaRadius */);
- // Draw shadow.
+ drawShadow(canvas);
+ }
+
+ public void drawShadow(Canvas canvas) {
if (mShadowShader == null) {
return;
}
+
float radius = getScaledRadius();
float shadowRadius = radius + mStrokeWidth;
+ mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(Color.BLACK);
int offsetX = getOffsetX();
int offsetY = getOffsetY();
@@ -219,7 +228,7 @@ public class PreviewBackground {
} else {
saveCount = canvas.save(Canvas.CLIP_SAVE_FLAG);
- clipCanvasSoftware(canvas, Region.Op.DIFFERENCE);
+ canvas.clipPath(getClipPath(), Region.Op.DIFFERENCE);
}
mShaderMatrix.setScale(shadowRadius, shadowRadius);
@@ -295,12 +304,11 @@ public class PreviewBackground {
radius - deltaRadius, mPaint);
}
- // It is the callers responsibility to save and restore the canvas layers.
- void clipCanvasSoftware(Canvas canvas, Region.Op op) {
+ public Path getClipPath() {
mPath.reset();
float r = getScaledRadius();
mPath.addCircle(r + getOffsetX(), r + getOffsetY(), r, Path.Direction.CW);
- canvas.clipPath(mPath, op);
+ return mPath;
}
// It is the callers responsibility to save and restore the canvas layers.
diff --git a/src/com/android/launcher3/folder/PreviewItemManager.java b/src/com/android/launcher3/folder/PreviewItemManager.java
index 2ecb54ca8..2d979a661 100644
--- a/src/com/android/launcher3/folder/PreviewItemManager.java
+++ b/src/com/android/launcher3/folder/PreviewItemManager.java
@@ -146,6 +146,10 @@ public class PreviewItemManager {
}
public void draw(Canvas canvas) {
+ // The items are drawn in coordinates relative to the preview offset
+ PreviewBackground bg = mIcon.getFolderBackground();
+ canvas.translate(bg.basePreviewOffsetX, bg.basePreviewOffsetY);
+
float firstPageItemsTransX = 0;
if (mShouldSlideInFirstPage) {
drawParams(canvas, mCurrentPageParams, mCurrentPageItemsTransX);
@@ -154,6 +158,7 @@ public class PreviewItemManager {
}
drawParams(canvas, mFirstPageParams, firstPageItemsTransX);
+ canvas.translate(-bg.basePreviewOffsetX, -bg.basePreviewOffsetY);
}
public void onParamsChanged() {