diff options
author | Michael Jurka <mikejurka@google.com> | 2011-10-27 11:40:13 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-10-27 11:40:13 -0700 |
commit | c5deca7c6a4139875e9b86c951f2b81b2db9f816 (patch) | |
tree | cc5ac381c66dd366a80c9fd273edae8ce8060175 /src | |
parent | 0191f1c9d8cd01eb40f96db23dab07961ae886c2 (diff) | |
parent | 8db7000140d3c35be92a4e07cf54ea6ec4ae3030 (diff) | |
download | android_packages_apps_Trebuchet-c5deca7c6a4139875e9b86c951f2b81b2db9f816.tar.gz android_packages_apps_Trebuchet-c5deca7c6a4139875e9b86c951f2b81b2db9f816.tar.bz2 android_packages_apps_Trebuchet-c5deca7c6a4139875e9b86c951f2b81b2db9f816.zip |
Merge "Asset updates" into ics-mr1
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher2/AppsCustomizePagedView.java | 42 | ||||
-rw-r--r-- | src/com/android/launcher2/HolographicOutlineHelper.java | 16 | ||||
-rw-r--r-- | src/com/android/launcher2/PendingAddItemInfo.java | 2 | ||||
-rw-r--r-- | src/com/android/launcher2/Workspace.java | 13 |
4 files changed, 57 insertions, 16 deletions
diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java index 4b2081ff0..5a54c7897 100644 --- a/src/com/android/launcher2/AppsCustomizePagedView.java +++ b/src/com/android/launcher2/AppsCustomizePagedView.java @@ -32,10 +32,13 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Canvas; +import android.graphics.MaskFilter; +import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.Bitmap.Config; +import android.graphics.TableMaskFilter; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Process; @@ -552,10 +555,20 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen createItemInfo.spanX = createItemInfo.spanY = 1; } + // We use a custom alpha clip table for the default widget previews + Paint alphaClipPaint = null; + if (createItemInfo instanceof PendingAddWidgetInfo) { + if (((PendingAddWidgetInfo) createItemInfo).hasDefaultPreview) { + MaskFilter alphaClipTable = TableMaskFilter.CreateClipTable(0, 255); + alphaClipPaint = new Paint(); + alphaClipPaint.setMaskFilter(alphaClipTable); + } + } + // Start the drag mLauncher.lockScreenOrientationOnLargeUI(); mLauncher.getWorkspace().onDragStartedWithItemSpans(createItemInfo.spanX, - createItemInfo.spanY, b); + createItemInfo.spanY, b, alphaClipPaint); mDragController.startDrag(image, b, this, createItemInfo, DragController.DRAG_ACTION_COPY, null); b.recycle(); @@ -914,10 +927,9 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen } private Bitmap getShortcutPreview(ResolveInfo info, int cellWidth, int cellHeight) { // Render the background - int offset = (int) (mAppIconSize * sWidgetPreviewIconPaddingPercentage); - int bitmapSize = mAppIconSize + 2 * offset; + int offset = 0; + int bitmapSize = mAppIconSize; Bitmap preview = Bitmap.createBitmap(bitmapSize, bitmapSize, Config.ARGB_8888); - renderDrawableToBitmap(mDefaultWidgetBackground, preview, 0, 0, bitmapSize, bitmapSize); // Render the icon Drawable icon = mIconCache.getFullResIcon(info, mPackageManager); @@ -964,41 +976,45 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen int targetHeight = mWidgetSpacingLayout.estimateCellHeight(cellVSpan); int bitmapWidth = targetWidth; int bitmapHeight = targetHeight; - int offset = (int) (mAppIconSize * sWidgetPreviewIconPaddingPercentage); + int minOffset = (int) (mAppIconSize * sWidgetPreviewIconPaddingPercentage); float iconScale = 1f; // Determine the size of the bitmap we want to draw if (cellHSpan == cellVSpan) { // For square widgets, we just have a fixed size for 1x1 and larger-than-1x1 if (cellHSpan <= 1) { - bitmapWidth = bitmapHeight = mAppIconSize + 2 * offset; + bitmapWidth = bitmapHeight = mAppIconSize + 2 * minOffset; } else { - bitmapWidth = bitmapHeight = mAppIconSize + 4 * offset; + bitmapWidth = bitmapHeight = mAppIconSize + 4 * minOffset; } } else { // Otherwise, ensure that we are properly sized within the cellWidth/Height if (targetWidth > targetHeight) { bitmapWidth = Math.min(targetWidth, cellWidth); bitmapHeight = (int) (targetHeight * ((float) bitmapWidth / targetWidth)); - iconScale = Math.min((float) bitmapHeight / (mAppIconSize + 2 * offset), 1f); + iconScale = Math.min((float) bitmapHeight / (mAppIconSize + 2 * minOffset), 1f); } else { bitmapHeight = Math.min(targetHeight, cellHeight); bitmapWidth = (int) (targetWidth * ((float) bitmapHeight / targetHeight)); - iconScale = Math.min((float) bitmapWidth / (mAppIconSize + 2 * offset), 1f); + iconScale = Math.min((float) bitmapWidth / (mAppIconSize + 2 * minOffset), 1f); } } preview = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Config.ARGB_8888); - renderDrawableToBitmap(mDefaultWidgetBackground, preview, 0, 0, bitmapWidth, - bitmapWidth); + if (cellHSpan != 1 || cellVSpan != 1) { + renderDrawableToBitmap(mDefaultWidgetBackground, preview, 0, 0, bitmapWidth, + bitmapHeight); + } // Draw the icon in the top left corner try { Drawable icon = null; + int hoffset = (int) (bitmapWidth / 2 - mAppIconSize * iconScale / 2); + int yoffset = (int) (bitmapHeight / 2 - mAppIconSize * iconScale / 2); if (info.icon > 0) icon = mPackageManager.getDrawable(packageName, info.icon, null); if (icon == null) icon = resources.getDrawable(R.drawable.ic_launcher_application); - renderDrawableToBitmap(icon, preview, (int) (offset * iconScale), - (int) (offset * iconScale), (int) (mAppIconSize * iconScale), + renderDrawableToBitmap(icon, preview, hoffset, yoffset, + (int) (mAppIconSize * iconScale), (int) (mAppIconSize * iconScale)); } catch (Resources.NotFoundException e) {} } diff --git a/src/com/android/launcher2/HolographicOutlineHelper.java b/src/com/android/launcher2/HolographicOutlineHelper.java index 748d89e09..1faaeefda 100644 --- a/src/com/android/launcher2/HolographicOutlineHelper.java +++ b/src/com/android/launcher2/HolographicOutlineHelper.java @@ -122,10 +122,18 @@ public class HolographicOutlineHelper { */ void applyExpensiveOutlineWithBlur(Bitmap srcDst, Canvas srcDstCanvas, int color, int outlineColor, int thickness) { + applyExpensiveOutlineWithBlur(srcDst, srcDstCanvas, color, outlineColor, mAlphaClipPaint, + thickness); + } + void applyExpensiveOutlineWithBlur(Bitmap srcDst, Canvas srcDstCanvas, int color, + int outlineColor, Paint alphaClipPaint, int thickness) { // We start by removing most of the alpha channel so as to ignore shadows, and // other types of partial transparency when defining the shape of the object - Bitmap glowShape = srcDst.extractAlpha(mAlphaClipPaint, mTempOffset); + if (alphaClipPaint == null) { + alphaClipPaint = mAlphaClipPaint; + } + Bitmap glowShape = srcDst.extractAlpha(alphaClipPaint, mTempOffset); // calculate the outer blur first BlurMaskFilter outerBlurMaskFilter; @@ -217,6 +225,12 @@ public class HolographicOutlineHelper { } void applyMediumExpensiveOutlineWithBlur(Bitmap srcDst, Canvas srcDstCanvas, int color, + int outlineColor, Paint alphaClipPaint) { + applyExpensiveOutlineWithBlur(srcDst, srcDstCanvas, color, outlineColor, alphaClipPaint, + MEDIUM); + } + + void applyMediumExpensiveOutlineWithBlur(Bitmap srcDst, Canvas srcDstCanvas, int color, int outlineColor) { applyExpensiveOutlineWithBlur(srcDst, srcDstCanvas, color, outlineColor, MEDIUM); } diff --git a/src/com/android/launcher2/PendingAddItemInfo.java b/src/com/android/launcher2/PendingAddItemInfo.java index 7b564e051..e243cc0cd 100644 --- a/src/com/android/launcher2/PendingAddItemInfo.java +++ b/src/com/android/launcher2/PendingAddItemInfo.java @@ -33,6 +33,7 @@ class PendingAddItemInfo extends ItemInfo { class PendingAddWidgetInfo extends PendingAddItemInfo { int minWidth; int minHeight; + boolean hasDefaultPreview; // Any configuration data that we want to pass to a configuration activity when // starting up a widget @@ -44,6 +45,7 @@ class PendingAddWidgetInfo extends PendingAddItemInfo { componentName = i.provider; minWidth = i.minWidth; minHeight = i.minHeight; + hasDefaultPreview = i.previewImage <= 0; if (dataMimeType != null && data != null) { mimeType = dataMimeType; configurationData = data; diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index bf8907865..0c297dd82 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -1464,6 +1464,10 @@ public class Workspace extends SmoothPagedView } public void onDragStartedWithItemSpans(int spanX, int spanY, Bitmap b) { + onDragStartedWithItemSpans(spanX, spanY, b, null); + } + + public void onDragStartedWithItemSpans(int spanX, int spanY, Bitmap b, Paint alphaClipPaint) { final Canvas canvas = new Canvas(); // We need to add extra padding to the bitmap to make room for the glow effect @@ -1474,7 +1478,7 @@ public class Workspace extends SmoothPagedView int[] size = cl.cellSpansToSize(spanX, spanY); // The outline is used to visualize where the item will land if dropped - mDragOutline = createDragOutline(b, canvas, bitmapPadding, size[0], size[1]); + mDragOutline = createDragOutline(b, canvas, bitmapPadding, size[0], size[1], alphaClipPaint); } // we call this method whenever a drag and drop in Launcher finishes, even if Workspace was @@ -1817,6 +1821,10 @@ public class Workspace extends SmoothPagedView * Responsibility for the bitmap is transferred to the caller. */ private Bitmap createDragOutline(Bitmap orig, Canvas canvas, int padding, int w, int h) { + return createDragOutline(orig, canvas, padding, w, h, null); + } + private Bitmap createDragOutline(Bitmap orig, Canvas canvas, int padding, int w, int h, + Paint alphaClipPaint) { final int outlineColor = getResources().getColor(android.R.color.holo_blue_light); final Bitmap b = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); canvas.setBitmap(b); @@ -1834,7 +1842,8 @@ public class Workspace extends SmoothPagedView Paint p = new Paint(); p.setFilterBitmap(true); canvas.drawBitmap(orig, src, dst, p); - mOutlineHelper.applyMediumExpensiveOutlineWithBlur(b, canvas, outlineColor, outlineColor); + mOutlineHelper.applyMediumExpensiveOutlineWithBlur(b, canvas, outlineColor, outlineColor, + alphaClipPaint); canvas.setBitmap(null); return b; |