diff options
36 files changed, 60 insertions, 21 deletions
diff --git a/res/drawable-hdpi/default_widget_preview_holo.9.png b/res/drawable-hdpi/default_widget_preview_holo.9.png Binary files differindex 6745e4945..0b4a6343f 100644 --- a/res/drawable-hdpi/default_widget_preview_holo.9.png +++ b/res/drawable-hdpi/default_widget_preview_holo.9.png diff --git a/res/drawable-hdpi/portal_container_holo.9.png b/res/drawable-hdpi/portal_container_holo.9.png Binary files differindex c4976124c..557ee5a98 100644 --- a/res/drawable-hdpi/portal_container_holo.9.png +++ b/res/drawable-hdpi/portal_container_holo.9.png diff --git a/res/drawable-hdpi/portal_ring_inner_holo.png b/res/drawable-hdpi/portal_ring_inner_holo.png Binary files differindex 477e56977..e95322156 100644 --- a/res/drawable-hdpi/portal_ring_inner_holo.png +++ b/res/drawable-hdpi/portal_ring_inner_holo.png diff --git a/res/drawable-hdpi/portal_ring_inner_nolip_holo.png b/res/drawable-hdpi/portal_ring_inner_nolip_holo.png Binary files differnew file mode 100644 index 000000000..257fc691b --- /dev/null +++ b/res/drawable-hdpi/portal_ring_inner_nolip_holo.png diff --git a/res/drawable-hdpi/portal_ring_outer_holo.png b/res/drawable-hdpi/portal_ring_outer_holo.png Binary files differindex 2b635cb1b..2bf0c0d18 100644 --- a/res/drawable-hdpi/portal_ring_outer_holo.png +++ b/res/drawable-hdpi/portal_ring_outer_holo.png diff --git a/res/drawable-hdpi/portal_ring_rest.png b/res/drawable-hdpi/portal_ring_rest.png Binary files differindex b9ef77829..93e3f6be3 100644 --- a/res/drawable-hdpi/portal_ring_rest.png +++ b/res/drawable-hdpi/portal_ring_rest.png diff --git a/res/drawable-hdpi/widget_info_bg.9.png b/res/drawable-hdpi/widget_info_bg.9.png Binary files differdeleted file mode 100644 index df4cea9dc..000000000 --- a/res/drawable-hdpi/widget_info_bg.9.png +++ /dev/null diff --git a/res/drawable-mdpi/default_widget_preview_holo.9.png b/res/drawable-mdpi/default_widget_preview_holo.9.png Binary files differindex f9a97263a..0bfdaef58 100644 --- a/res/drawable-mdpi/default_widget_preview_holo.9.png +++ b/res/drawable-mdpi/default_widget_preview_holo.9.png diff --git a/res/drawable-mdpi/portal_container_holo.9.png b/res/drawable-mdpi/portal_container_holo.9.png Binary files differindex 30b0fa0fa..9a4751730 100644 --- a/res/drawable-mdpi/portal_container_holo.9.png +++ b/res/drawable-mdpi/portal_container_holo.9.png diff --git a/res/drawable-mdpi/portal_ring_inner_holo.png b/res/drawable-mdpi/portal_ring_inner_holo.png Binary files differindex eccea20c4..3d704af65 100644 --- a/res/drawable-mdpi/portal_ring_inner_holo.png +++ b/res/drawable-mdpi/portal_ring_inner_holo.png diff --git a/res/drawable-mdpi/portal_ring_inner_nolip_holo.png b/res/drawable-mdpi/portal_ring_inner_nolip_holo.png Binary files differnew file mode 100644 index 000000000..1dbdbe841 --- /dev/null +++ b/res/drawable-mdpi/portal_ring_inner_nolip_holo.png diff --git a/res/drawable-mdpi/portal_ring_outer_holo.png b/res/drawable-mdpi/portal_ring_outer_holo.png Binary files differindex c5142171d..3a7303ec5 100644 --- a/res/drawable-mdpi/portal_ring_outer_holo.png +++ b/res/drawable-mdpi/portal_ring_outer_holo.png diff --git a/res/drawable-mdpi/portal_ring_rest.png b/res/drawable-mdpi/portal_ring_rest.png Binary files differindex 3ab8b368f..259e48c0c 100644 --- a/res/drawable-mdpi/portal_ring_rest.png +++ b/res/drawable-mdpi/portal_ring_rest.png diff --git a/res/drawable-mdpi/widget_info_bg.9.png b/res/drawable-mdpi/widget_info_bg.9.png Binary files differdeleted file mode 100644 index c8c62b58f..000000000 --- a/res/drawable-mdpi/widget_info_bg.9.png +++ /dev/null diff --git a/res/drawable-xhdpi/default_widget_preview_holo.9.png b/res/drawable-xhdpi/default_widget_preview_holo.9.png Binary files differindex 87cc9753b..42d57d843 100644 --- a/res/drawable-xhdpi/default_widget_preview_holo.9.png +++ b/res/drawable-xhdpi/default_widget_preview_holo.9.png diff --git a/res/drawable-xhdpi/portal_container_holo.9.png b/res/drawable-xhdpi/portal_container_holo.9.png Binary files differindex 0935a4b75..4ae8d223b 100644 --- a/res/drawable-xhdpi/portal_container_holo.9.png +++ b/res/drawable-xhdpi/portal_container_holo.9.png diff --git a/res/drawable-xhdpi/portal_ring_inner_holo.png b/res/drawable-xhdpi/portal_ring_inner_holo.png Binary files differindex bc34314ed..b9867c0d9 100644 --- a/res/drawable-xhdpi/portal_ring_inner_holo.png +++ b/res/drawable-xhdpi/portal_ring_inner_holo.png diff --git a/res/drawable-xhdpi/portal_ring_inner_nolip_holo.png b/res/drawable-xhdpi/portal_ring_inner_nolip_holo.png Binary files differnew file mode 100644 index 000000000..e218713e4 --- /dev/null +++ b/res/drawable-xhdpi/portal_ring_inner_nolip_holo.png diff --git a/res/drawable-xhdpi/portal_ring_outer_holo.png b/res/drawable-xhdpi/portal_ring_outer_holo.png Binary files differindex a7b5b6013..286bee039 100644 --- a/res/drawable-xhdpi/portal_ring_outer_holo.png +++ b/res/drawable-xhdpi/portal_ring_outer_holo.png diff --git a/res/drawable-xhdpi/portal_ring_rest.png b/res/drawable-xhdpi/portal_ring_rest.png Binary files differindex ba0a652e7..ab5c2c479 100644 --- a/res/drawable-xhdpi/portal_ring_rest.png +++ b/res/drawable-xhdpi/portal_ring_rest.png diff --git a/res/drawable-xhdpi/widget_info_bg.9.png b/res/drawable-xhdpi/widget_info_bg.9.png Binary files differdeleted file mode 100644 index 19eff0589..000000000 --- a/res/drawable-xhdpi/widget_info_bg.9.png +++ /dev/null diff --git a/res/drawable-xlarge-hdpi/portal_ring_inner_holo.png b/res/drawable-xlarge-hdpi/portal_ring_inner_holo.png Binary files differindex 659c23ba9..b3be4720a 100644 --- a/res/drawable-xlarge-hdpi/portal_ring_inner_holo.png +++ b/res/drawable-xlarge-hdpi/portal_ring_inner_holo.png diff --git a/res/drawable-xlarge-hdpi/portal_ring_inner_nolip_holo.png b/res/drawable-xlarge-hdpi/portal_ring_inner_nolip_holo.png Binary files differnew file mode 100644 index 000000000..96b981c50 --- /dev/null +++ b/res/drawable-xlarge-hdpi/portal_ring_inner_nolip_holo.png diff --git a/res/drawable-xlarge-hdpi/portal_ring_outer_holo.png b/res/drawable-xlarge-hdpi/portal_ring_outer_holo.png Binary files differindex 8ec67df5a..bc13a26cd 100644 --- a/res/drawable-xlarge-hdpi/portal_ring_outer_holo.png +++ b/res/drawable-xlarge-hdpi/portal_ring_outer_holo.png diff --git a/res/drawable-xlarge-mdpi/portal_ring_inner_holo.png b/res/drawable-xlarge-mdpi/portal_ring_inner_holo.png Binary files differindex 8e3dd576a..319c07427 100644 --- a/res/drawable-xlarge-mdpi/portal_ring_inner_holo.png +++ b/res/drawable-xlarge-mdpi/portal_ring_inner_holo.png diff --git a/res/drawable-xlarge-mdpi/portal_ring_inner_nolip_holo.png b/res/drawable-xlarge-mdpi/portal_ring_inner_nolip_holo.png Binary files differnew file mode 100644 index 000000000..8537714aa --- /dev/null +++ b/res/drawable-xlarge-mdpi/portal_ring_inner_nolip_holo.png diff --git a/res/drawable-xlarge-mdpi/portal_ring_outer_holo.png b/res/drawable-xlarge-mdpi/portal_ring_outer_holo.png Binary files differindex 94e067775..365dcfce9 100644 --- a/res/drawable-xlarge-mdpi/portal_ring_outer_holo.png +++ b/res/drawable-xlarge-mdpi/portal_ring_outer_holo.png diff --git a/res/drawable-xlarge-xhdpi/portal_ring_inner_holo.png b/res/drawable-xlarge-xhdpi/portal_ring_inner_holo.png Binary files differindex a013e5a60..d4ce45f12 100644 --- a/res/drawable-xlarge-xhdpi/portal_ring_inner_holo.png +++ b/res/drawable-xlarge-xhdpi/portal_ring_inner_holo.png diff --git a/res/drawable-xlarge-xhdpi/portal_ring_inner_nolip_holo.png b/res/drawable-xlarge-xhdpi/portal_ring_inner_nolip_holo.png Binary files differnew file mode 100644 index 000000000..9aa13c987 --- /dev/null +++ b/res/drawable-xlarge-xhdpi/portal_ring_inner_nolip_holo.png diff --git a/res/drawable-xlarge-xhdpi/portal_ring_outer_holo.png b/res/drawable-xlarge-xhdpi/portal_ring_outer_holo.png Binary files differindex 7bdaaf39b..0106cd6e0 100644 --- a/res/drawable-xlarge-xhdpi/portal_ring_outer_holo.png +++ b/res/drawable-xlarge-xhdpi/portal_ring_outer_holo.png diff --git a/res/layout-sw720dp/apps_customize_widget.xml b/res/layout-sw720dp/apps_customize_widget.xml index 31c3fbe58..e707ef774 100644 --- a/res/layout-sw720dp/apps_customize_widget.xml +++ b/res/layout-sw720dp/apps_customize_widget.xml @@ -32,8 +32,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="4dp" - android:orientation="vertical" - android:background="@drawable/widget_info_bg"> + android:orientation="vertical"> <!-- The name of the widget. --> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/widget_name" @@ -54,7 +53,7 @@ <!-- The original dimensions of the widget (can't be the same text as above due to different style. --> - <TextView xmlns:android="http://schemas.android.com/apk/res/android" + <TextView android:id="@+id/widget_dims" android:layout_width="wrap_content" android:layout_height="wrap_content" diff --git a/res/layout/apps_customize_widget.xml b/res/layout/apps_customize_widget.xml index 7cc4177de..2c11c1db9 100644 --- a/res/layout/apps_customize_widget.xml +++ b/res/layout/apps_customize_widget.xml @@ -32,8 +32,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="4dp" - android:orientation="horizontal" - android:background="@drawable/widget_info_bg"> + android:orientation="horizontal"> <!-- The name of the widget. --> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/widget_name" diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java index f5142bfa6..dab73a656 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; |