diff options
author | Winson Chung <winsonc@google.com> | 2010-10-28 16:07:04 -0700 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2010-11-01 16:10:49 -0700 |
commit | 7da1025bd7f15b04cf55c79b73e94e5e1bc959d9 (patch) | |
tree | f0c20ed38a4db0ee27d0d67b9618fb9a9a0cc777 /src/com/android/launcher2/CustomizePagedView.java | |
parent | 30110328a249a049673266bfce39ca9dcf650af9 (diff) | |
download | android_packages_apps_Trebuchet-7da1025bd7f15b04cf55c79b73e94e5e1bc959d9.tar.gz android_packages_apps_Trebuchet-7da1025bd7f15b04cf55c79b73e94e5e1bc959d9.tar.bz2 android_packages_apps_Trebuchet-7da1025bd7f15b04cf55c79b73e94e5e1bc959d9.zip |
Layout and spacing changes for AllApps/Customization drawer
- Also fixing issue where preview images in the customization drawer were not being scaled down
Change-Id: I83d1abf019d591954204b87a437eac2ff916dd54
Diffstat (limited to 'src/com/android/launcher2/CustomizePagedView.java')
-rw-r--r-- | src/com/android/launcher2/CustomizePagedView.java | 65 |
1 files changed, 48 insertions, 17 deletions
diff --git a/src/com/android/launcher2/CustomizePagedView.java b/src/com/android/launcher2/CustomizePagedView.java index a475a50d2..156bc20bb 100644 --- a/src/com/android/launcher2/CustomizePagedView.java +++ b/src/com/android/launcher2/CustomizePagedView.java @@ -33,6 +33,7 @@ import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas; +import android.graphics.Color; import android.graphics.Rect; import android.graphics.Region.Op; import android.graphics.drawable.Drawable; @@ -130,6 +131,12 @@ public class CustomizePagedView extends PagedView setupWorkspaceLayout(); } + @Override + protected void init() { + super.init(); + mCenterPagesVertically = false; + } + public void setLauncher(Launcher launcher) { Context context = getContext(); mLauncher = launcher; @@ -440,6 +447,17 @@ public class CustomizePagedView extends PagedView } /** + * Helper function to draw a drawable to the specified canvas with the specified bounds. + */ + private void renderDrawableToBitmap(Drawable d, Bitmap bitmap, int l, int t, int r, int b) { + if (bitmap != null) mCanvas.setBitmap(bitmap); + mCanvas.save(); + d.setBounds(l, t, r, b); + d.draw(mCanvas); + mCanvas.restore(); + } + + /** * This method will extract the preview image specified by the widget developer (if it exists), * otherwise, it will try to generate a default image preview with the widget's package icon. * @return the drawable will be used and sized in the ImageView to represent the widget @@ -453,28 +471,21 @@ public class CustomizePagedView extends PagedView if (drawable == null) { Log.w(TAG, "Can't load icon drawable 0x" + Integer.toHexString(info.icon) + " for provider: " + info.provider); - } else { - return drawable; } } // If we don't have a preview image, create a default one + final int minDim = mWorkspaceWidgetLayout.estimateCellWidth(1); + final int maxDim = mWorkspaceWidgetLayout.estimateCellWidth(3); if (drawable == null) { Resources resources = mLauncher.getResources(); // Create a new bitmap to hold the widget preview - final int minDim = mWorkspaceWidgetLayout.estimateCellWidth(1); - final int maxDim = mWorkspaceWidgetLayout.estimateCellWidth(3); int width = (int) (Math.max(minDim, Math.min(maxDim, info.minWidth)) * sScaleFactor); int height = (int) (Math.max(minDim, Math.min(maxDim, info.minHeight)) * sScaleFactor); - Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888); - mCanvas.setBitmap(bitmap); - // For some reason, we must re-set the clip rect here, otherwise it will be wrong - mCanvas.clipRect(0, 0, width, height, Op.REPLACE); - - Drawable background = resources.getDrawable(R.drawable.default_widget_preview); - background.setBounds(0, 0, width, height); - background.draw(mCanvas); + final Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888); + final Drawable background = resources.getDrawable(R.drawable.default_widget_preview); + renderDrawableToBitmap(background, bitmap, 0, 0, width, height); // Draw the icon vertically centered, flush left try { @@ -490,13 +501,34 @@ public class CustomizePagedView extends PagedView final int iconSize = minDim / 2; final int offset = iconSize / 4; - icon.setBounds(new Rect(offset, offset, offset + iconSize, offset + iconSize)); - icon.draw(mCanvas); + final int offsetIconSize = offset + iconSize; + renderDrawableToBitmap(icon, null, offset, offset, offsetIconSize, offsetIconSize); } catch (Resources.NotFoundException e) { // if we can't find the icon, then just don't draw it } drawable = new FastBitmapDrawable(bitmap); + } else { + // Scale down the preview if necessary + final float aspect = (float) info.minWidth / info.minHeight; + final int boundedWidth = (int) Math.max(minDim, Math.min(maxDim, info.minWidth)); + final int boundedHeight = (int) Math.max(minDim, Math.min(maxDim, info.minHeight)); + final int scaledWidth = (int) (boundedWidth * sScaleFactor); + final int scaledHeight = (int) (boundedHeight * sScaleFactor); + int width; + int height; + if (scaledWidth > scaledHeight) { + width = scaledWidth; + height = (int) (width / aspect); + } else { + height = scaledHeight; + width = (int) (height * aspect); + } + + final Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888); + renderDrawableToBitmap(drawable, bitmap, 0, 0, width, height); + + drawable = new FastBitmapDrawable(bitmap); } drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); return drawable; @@ -607,7 +639,7 @@ public class CustomizePagedView extends PagedView PagedViewIcon icon = (PagedViewIcon) mInflater.inflate( R.layout.customize_paged_view_item, layout, false); - icon.applyFromResolveInfo(info, mPackageManager, mPageViewIconCache); + icon.applyFromResolveInfo(info, mPackageManager, mPageViewIconCache, true); switch (mCustomizationType) { case WallpaperCustomization: icon.setOnClickListener(this); @@ -661,7 +693,7 @@ public class CustomizePagedView extends PagedView final ApplicationInfo info = mApps.get(i); PagedViewIcon icon = (PagedViewIcon) mInflater.inflate( R.layout.all_apps_paged_view_application, layout, false); - icon.applyFromApplicationInfo(info, mPageViewIconCache, false); + icon.applyFromApplicationInfo(info, mPageViewIconCache, true); icon.setOnClickListener(this); icon.setOnLongClickListener(this); @@ -763,5 +795,4 @@ public class CustomizePagedView extends PagedView public boolean onActionItemClicked(ActionMode mode, MenuItem item) { return false; } - } |