From fd177c1d10085e5e12ff7df27d956a378d1139b1 Mon Sep 17 00:00:00 2001 From: Michael Jurka Date: Tue, 19 Oct 2010 15:50:43 -0700 Subject: [PATCH 1/4] Fix bug where screen would get stuck while panning Bug: 3109113 --- src/com/android/launcher2/PagedView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java index abb9b0be56..39a6af0480 100644 --- a/src/com/android/launcher2/PagedView.java +++ b/src/com/android/launcher2/PagedView.java @@ -649,7 +649,7 @@ public abstract class PagedView extends ViewGroup { * otherwise don't. mScroller.isFinished should be false when * being flinged. */ - final int xDist = (mScroller.getFinalX() - mScroller.getCurrX()); + final int xDist = Math.abs(mScroller.getFinalX() - mScroller.getCurrX()); final boolean finishedScrolling = (mScroller.isFinished() || xDist < mTouchSlop); if (finishedScrolling) { mTouchState = TOUCH_STATE_REST; From 8e58e916061cbe2623697efac0924f2aa3753a92 Mon Sep 17 00:00:00 2001 From: Patrick Dubroy Date: Thu, 14 Oct 2010 13:21:48 -0700 Subject: [PATCH 2/4] Various cleanups in the drag viz code. Most importantly: - Don't allocate a new Paint object in CellLayout.onDraw - Scale holographic outlines based on the screen density --- src/com/android/launcher2/CellLayout.java | 11 +++--- .../launcher2/HolographicOutlineHelper.java | 37 ++++++++++++------- .../launcher2/LauncherApplication.java | 6 +++ src/com/android/launcher2/Workspace.java | 16 ++++---- 4 files changed, 44 insertions(+), 26 deletions(-) diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java index c9be887d3a..d94bacfbf6 100644 --- a/src/com/android/launcher2/CellLayout.java +++ b/src/com/android/launcher2/CellLayout.java @@ -49,6 +49,8 @@ import android.view.animation.Animation; import android.view.animation.DecelerateInterpolator; import android.view.animation.LayoutAnimationController; +import java.util.Arrays; + public class CellLayout extends ViewGroup implements Dimmable { static final String TAG = "CellLayout"; @@ -107,6 +109,7 @@ public class CellLayout extends ViewGroup implements Dimmable { // Used as an index into the above 3 arrays; indicates which is the most current value. private int mDragOutlineCurrent = 0; + private final Paint mDragOutlinePaint = new Paint(); private Drawable mCrosshairsDrawable = null; private InterruptibleInOutAnimator mCrosshairsAnimator = null; @@ -188,7 +191,7 @@ public class CellLayout extends ViewGroup implements Dimmable { mCrosshairsAnimator.getAnimator().addUpdateListener(new AnimatorUpdateListener() { public void onAnimationUpdate(ValueAnimator animation) { mCrosshairsVisibility = ((Float) animation.getAnimatedValue()).floatValue(); - CellLayout.this.invalidate(); + invalidate(); } }); mCrosshairsAnimator.getAnimator().setInterpolator(mEaseOutInterpolator); @@ -205,9 +208,7 @@ public class CellLayout extends ViewGroup implements Dimmable { final float fromAlphaValue = 0; final float toAlphaValue = (float)res.getInteger(R.integer.config_dragOutlineMaxAlpha); - for (int i = 0; i < mDragOutlineAlphas.length; i++) { - mDragOutlineAlphas[i] = fromAlphaValue; - } + Arrays.fill(mDragOutlineAlphas, fromAlphaValue); for (int i = 0; i < mDragOutlineAnims.length; i++) { final InterruptibleInOutAnimator anim = @@ -404,7 +405,7 @@ public class CellLayout extends ViewGroup implements Dimmable { } } - final Paint paint = new Paint(); + final Paint paint = mDragOutlinePaint; for (int i = 0; i < mDragOutlines.length; i++) { final float alpha = mDragOutlineAlphas[i]; if (alpha > 0) { diff --git a/src/com/android/launcher2/HolographicOutlineHelper.java b/src/com/android/launcher2/HolographicOutlineHelper.java index ea4b01a4cc..bca3f715e5 100644 --- a/src/com/android/launcher2/HolographicOutlineHelper.java +++ b/src/com/android/launcher2/HolographicOutlineHelper.java @@ -23,7 +23,6 @@ import android.graphics.MaskFilter; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; -import android.graphics.Rect; import android.graphics.TableMaskFilter; public class HolographicOutlineHelper { @@ -31,19 +30,24 @@ public class HolographicOutlineHelper { private final Paint mBlurPaint = new Paint(); private final Paint mErasePaint = new Paint(); - private static final BlurMaskFilter sLargeGlowBlurMaskFilter = new BlurMaskFilter( - 10.0f, BlurMaskFilter.Blur.OUTER); - private static final BlurMaskFilter sThickOuterBlurMaskFilter = new BlurMaskFilter( - 6.0f, BlurMaskFilter.Blur.OUTER); - private static final BlurMaskFilter sMediumOuterBlurMaskFilter = new BlurMaskFilter( - 2.0f, BlurMaskFilter.Blur.OUTER); - private static final BlurMaskFilter sThinOuterBlurMaskFilter = new BlurMaskFilter( - 1.0f, BlurMaskFilter.Blur.OUTER); + public static final int OUTER_BLUR_RADIUS; - private static final BlurMaskFilter sThickInnerBlurMaskFilter = new BlurMaskFilter( - 4.0f, BlurMaskFilter.Blur.NORMAL); - private static final BlurMaskFilter sThinInnerBlurMaskFilter = new BlurMaskFilter( - 1.0f, BlurMaskFilter.Blur.INNER); + private static final BlurMaskFilter sThickOuterBlurMaskFilter; + private static final BlurMaskFilter sMediumOuterBlurMaskFilter; + private static final BlurMaskFilter sThinOuterBlurMaskFilter; + private static final BlurMaskFilter sThickInnerBlurMaskFilter; + + static { + final float scale = LauncherApplication.getScreenDensity(); + + OUTER_BLUR_RADIUS = (int) (scale * 6.0f); + + sThickOuterBlurMaskFilter = new BlurMaskFilter(OUTER_BLUR_RADIUS, + BlurMaskFilter.Blur.OUTER); + sMediumOuterBlurMaskFilter = new BlurMaskFilter(scale * 2.0f, BlurMaskFilter.Blur.OUTER); + sThinOuterBlurMaskFilter = new BlurMaskFilter(scale * 1.0f, BlurMaskFilter.Blur.OUTER); + sThickInnerBlurMaskFilter = new BlurMaskFilter(scale * 4.0f, BlurMaskFilter.Blur.NORMAL); + } private static final MaskFilter sFineClipTable = TableMaskFilter.CreateClipTable(0, 20); private static final MaskFilter sCoarseClipTable = TableMaskFilter.CreateClipTable(0, 200); @@ -81,7 +85,12 @@ public class HolographicOutlineHelper { } } - void applyGlow(Bitmap bitmap, Canvas canvas, int color) { + /** + * Apply an outer blur to the given bitmap. + * You should use OUTER_BLUR_RADIUS to ensure that the bitmap is big enough to draw + * the blur without clipping. + */ + void applyOuterBlur(Bitmap bitmap, Canvas canvas, int color) { mBlurPaint.setMaskFilter(sThickOuterBlurMaskFilter); Bitmap glow = bitmap.extractAlpha(mBlurPaint, mTempOffset); diff --git a/src/com/android/launcher2/LauncherApplication.java b/src/com/android/launcher2/LauncherApplication.java index ca08378d8c..8a18317bc6 100644 --- a/src/com/android/launcher2/LauncherApplication.java +++ b/src/com/android/launcher2/LauncherApplication.java @@ -29,6 +29,7 @@ public class LauncherApplication extends Application { public LauncherModel mModel; public IconCache mIconCache; private static boolean sIsScreenXLarge; + private static float sScreenDensity; private static final boolean ENABLE_ROTATION = false; @Override @@ -40,6 +41,7 @@ public class LauncherApplication extends Application { mIconCache = new IconCache(this); mModel = new LauncherModel(this, mIconCache); sIsScreenXLarge = (getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE; + sScreenDensity = getResources().getDisplayMetrics().density; // Register intent receivers IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED); @@ -101,4 +103,8 @@ public class LauncherApplication extends Application { public static boolean isScreenXLarge() { return sIsScreenXLarge; } + + public static float getScreenDensity() { + return sScreenDensity; + } } diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index dd622a6aab..d123374d20 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -139,10 +139,10 @@ public class Workspace extends SmoothPagedView private boolean mInScrollArea = false; - private HolographicOutlineHelper mOutlineHelper = new HolographicOutlineHelper(); + private final HolographicOutlineHelper mOutlineHelper = new HolographicOutlineHelper(); private Bitmap mDragOutline = null; - private Rect mTempRect = new Rect(); - private int[] mTempXY = new int[2]; + private final Rect mTempRect = new Rect(); + private final int[] mTempXY = new int[2]; /** * Used to inflate the Workspace from XML. @@ -991,14 +991,13 @@ public class Workspace extends SmoothPagedView canvas.setBitmap(b); canvas.drawBitmap(mDragOutline, 0, 0, null); drawDragView(v, canvas, padding); - mOutlineHelper.applyGlow(b, canvas, outlineColor); + mOutlineHelper.applyOuterBlur(b, canvas, outlineColor); return b; } void startDrag(CellLayout.CellInfo cellInfo) { View child = cellInfo.cell; - final int blurPadding = 40; // Make sure the drag was started by a long press as opposed to a long click. if (!child.isInTouchMode()) { @@ -1017,11 +1016,14 @@ public class Workspace extends SmoothPagedView final Canvas canvas = new Canvas(); + // We need to add extra padding to the bitmap to make room for the glow effect + final int bitmapPadding = HolographicOutlineHelper.OUTER_BLUR_RADIUS; + // The outline is used to visualize where the item will land if dropped - mDragOutline = createDragOutline(child, canvas, blurPadding); + mDragOutline = createDragOutline(child, canvas, bitmapPadding); // The drag bitmap follows the touch point around on the screen - final Bitmap b = createDragBitmap(child, canvas, blurPadding); + final Bitmap b = createDragBitmap(child, canvas, bitmapPadding); final int bmpWidth = b.getWidth(); final int bmpHeight = b.getHeight(); From df4b83dd9d6380ab963c62d1f9d1312efc87cb0f Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Wed, 20 Oct 2010 17:49:27 -0700 Subject: [PATCH 3/4] More spacing changes for AllApps. - Also testing a simple scale of existing icons in lieu of high res icons. Change-Id: Ib9758064536cd1b1704344ea885bccdc93dd3466 --- res/layout-xlarge-land/all_apps_tabbed.xml | 16 ++++++++-------- res/layout-xlarge-land/launcher.xml | 2 +- res/layout-xlarge-port/all_apps_tabbed.xml | 11 ++++++----- .../customization_drawer.xml | 4 ++-- res/layout-xlarge-port/launcher.xml | 2 +- .../all_apps_paged_view_application.xml | 3 ++- res/values-xlarge/dimens.xml | 3 ++- res/values/attrs.xml | 5 +++++ .../android/launcher2/AllAppsPagedView.java | 3 ++- .../android/launcher2/CustomizePagedView.java | 2 +- src/com/android/launcher2/PagedView.java | 6 ++++++ .../launcher2/PagedViewCellLayout.java | 19 ++++++++++++++++--- src/com/android/launcher2/PagedViewIcon.java | 14 ++++++++++++-- src/com/android/launcher2/Workspace.java | 5 ++++- 14 files changed, 68 insertions(+), 27 deletions(-) diff --git a/res/layout-xlarge-land/all_apps_tabbed.xml b/res/layout-xlarge-land/all_apps_tabbed.xml index 3a07b9543d..fd9d9cbf6e 100644 --- a/res/layout-xlarge-land/all_apps_tabbed.xml +++ b/res/layout-xlarge-land/all_apps_tabbed.xml @@ -15,8 +15,7 @@ --> + xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"> + android:tabStripEnabled="false" /> + launcher:pageLayoutPaddingLeft="40dp" + launcher:pageLayoutPaddingRight="40dp"> diff --git a/res/layout-xlarge-land/launcher.xml b/res/layout-xlarge-land/launcher.xml index 65f29df00a..0ef946f9ad 100644 --- a/res/layout-xlarge-land/launcher.xml +++ b/res/layout-xlarge-land/launcher.xml @@ -26,7 +26,7 @@ layout="@layout/all_apps_tabbed" android:id="@+id/all_apps_view" android:layout_width="match_parent" - android:layout_height="550dip" + android:layout_height="600dip" android:layout_gravity="top"/> diff --git a/res/layout-xlarge-port/all_apps_tabbed.xml b/res/layout-xlarge-port/all_apps_tabbed.xml index 6675adc554..d61c979def 100644 --- a/res/layout-xlarge-port/all_apps_tabbed.xml +++ b/res/layout-xlarge-port/all_apps_tabbed.xml @@ -26,8 +26,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" - android:tabStripEnabled="false" - android:paddingBottom="10dp" /> + android:tabStripEnabled="false" /> + launcher:pageLayoutPaddingLeft="20dp" + launcher:pageLayoutPaddingRight="20dp"> diff --git a/res/layout-xlarge-port/customization_drawer.xml b/res/layout-xlarge-port/customization_drawer.xml index 20c207f42a..53d1f6f88d 100644 --- a/res/layout-xlarge-port/customization_drawer.xml +++ b/res/layout-xlarge-port/customization_drawer.xml @@ -24,5 +24,5 @@ launcher:cellCountY="4" launcher:pageLayoutPaddingTop="15dp" launcher:pageLayoutPaddingBottom="25dp" - launcher:pageLayoutPaddingLeft="0dp" - launcher:pageLayoutPaddingRight="0dp" /> \ No newline at end of file + launcher:pageLayoutPaddingLeft="15dp" + launcher:pageLayoutPaddingRight="15dp" /> diff --git a/res/layout-xlarge-port/launcher.xml b/res/layout-xlarge-port/launcher.xml index a418b36aa7..df7abc161b 100644 --- a/res/layout-xlarge-port/launcher.xml +++ b/res/layout-xlarge-port/launcher.xml @@ -26,7 +26,7 @@ layout="@layout/all_apps_tabbed" android:id="@+id/all_apps_view" android:layout_width="match_parent" - android:layout_height="1000dip" + android:layout_height="1040dip" android:layout_gravity="top"/> diff --git a/res/layout-xlarge/all_apps_paged_view_application.xml b/res/layout-xlarge/all_apps_paged_view_application.xml index 8e53e06564..f687739980 100644 --- a/res/layout-xlarge/all_apps_paged_view_application.xml +++ b/res/layout-xlarge/all_apps_paged_view_application.xml @@ -22,6 +22,7 @@ launcher:outlineColor="#FF8CD2FF" launcher:checkedBlurColor="#FFBBE83C" launcher:checkedOutlineColor="#FF8CD2FF" + launcher:scaledIconSize="64dp" android:id="@+id/application_icon" android:layout_width="match_parent" @@ -30,7 +31,7 @@ android:paddingTop="2dip" android:textColor="#FFFFFFFF" - android:textSize="14sp" + android:textSize="13sp" android:shadowColor="#FF000000" android:shadowDx="0.0" android:shadowDy="1.0" diff --git a/res/values-xlarge/dimens.xml b/res/values-xlarge/dimens.xml index 4662aad9f7..ecc6f3a65f 100644 --- a/res/values-xlarge/dimens.xml +++ b/res/values-xlarge/dimens.xml @@ -23,7 +23,8 @@ 0dip - 60dip + 30dip + 60dip 10dip diff --git a/res/values/attrs.xml b/res/values/attrs.xml index 14a5e98ac1..a0e2706e01 100644 --- a/res/values/attrs.xml +++ b/res/values/attrs.xml @@ -66,6 +66,8 @@ + + + + + diff --git a/src/com/android/launcher2/AllAppsPagedView.java b/src/com/android/launcher2/AllAppsPagedView.java index 42101eb4ca..5de53d80fb 100644 --- a/src/com/android/launcher2/AllAppsPagedView.java +++ b/src/com/android/launcher2/AllAppsPagedView.java @@ -358,6 +358,7 @@ public class AllAppsPagedView extends PagedView layout.setCellCount(mCellCountX, mCellCountY); layout.setPadding(mPageLayoutPaddingLeft, mPageLayoutPaddingTop, mPageLayoutPaddingRight, mPageLayoutPaddingBottom); + layout.setGap(mPageLayoutWidthGap, mPageLayoutHeightGap); addView(layout); } @@ -414,7 +415,7 @@ public class AllAppsPagedView extends PagedView final int index = i - startIndex; final ApplicationInfo info = mFilteredApps.get(i); PagedViewIcon icon = (PagedViewIcon) layout.getChildAt(index); - icon.applyFromApplicationInfo(info, mPageViewIconCache); + icon.applyFromApplicationInfo(info, mPageViewIconCache, true); PagedViewCellLayout.LayoutParams params = (PagedViewCellLayout.LayoutParams) icon.getLayoutParams(); diff --git a/src/com/android/launcher2/CustomizePagedView.java b/src/com/android/launcher2/CustomizePagedView.java index 6b7aa98cb9..f832b62bdf 100644 --- a/src/com/android/launcher2/CustomizePagedView.java +++ b/src/com/android/launcher2/CustomizePagedView.java @@ -722,7 +722,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); + icon.applyFromApplicationInfo(info, mPageViewIconCache, false); icon.setOnClickListener(this); icon.setOnLongClickListener(this); diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java index 39a6af0480..4ccc4aeab0 100644 --- a/src/com/android/launcher2/PagedView.java +++ b/src/com/android/launcher2/PagedView.java @@ -96,6 +96,8 @@ public abstract class PagedView extends ViewGroup { protected int mPageLayoutPaddingBottom; protected int mPageLayoutPaddingLeft; protected int mPageLayoutPaddingRight; + protected int mPageLayoutWidthGap; + protected int mPageLayoutHeightGap; protected int mCellCountX; protected int mCellCountY; @@ -184,6 +186,10 @@ public abstract class PagedView extends ViewGroup { R.styleable.PagedView_pageLayoutPaddingLeft, 10); mPageLayoutPaddingRight = a.getDimensionPixelSize( R.styleable.PagedView_pageLayoutPaddingRight, 10); + mPageLayoutWidthGap = a.getDimensionPixelSize( + R.styleable.PagedView_pageLayoutWidthGap, -1); + mPageLayoutHeightGap = a.getDimensionPixelSize( + R.styleable.PagedView_pageLayoutHeightGap, -1); a.recycle(); setHapticFeedbackEnabled(false); diff --git a/src/com/android/launcher2/PagedViewCellLayout.java b/src/com/android/launcher2/PagedViewCellLayout.java index b247a065f5..0a5a2ec290 100644 --- a/src/com/android/launcher2/PagedViewCellLayout.java +++ b/src/com/android/launcher2/PagedViewCellLayout.java @@ -46,6 +46,8 @@ public class PagedViewCellLayout extends ViewGroup { private int mCellCountY; private int mCellWidth; private int mCellHeight; + private int mWidthGap; + private int mHeightGap; private static int sDefaultCellDimensions = 96; public PagedViewCellLayout(Context context) { @@ -66,6 +68,7 @@ public class PagedViewCellLayout extends ViewGroup { mCellCountX = LauncherModel.getCellCountX(); mCellCountY = LauncherModel.getCellCountY(); mHolographicAlpha = 0.0f; + mWidthGap = mHeightGap = -1; } @Override @@ -168,12 +171,17 @@ public class PagedViewCellLayout extends ViewGroup { paddingLeft += ((widthGap - minGap) * (mCellCountX - 1)) / 2; } */ - widthGap = heightGap = minGap; + if (mWidthGap > -1 && mHeightGap > -1) { + widthGap = mWidthGap; + heightGap = mHeightGap; + } else { + widthGap = heightGap = minGap; + } int newWidth = mPaddingLeft + mPaddingRight + (mCellCountX * cellWidth) + - ((mCellCountX - 1) * minGap); + ((mCellCountX - 1) * widthGap); int newHeight = mPaddingTop + mPaddingBottom + (mCellCountY * cellHeight) + - ((mCellCountY - 1) * minGap); + ((mCellCountY - 1) * heightGap); final int count = getChildCount(); for (int i = 0; i < count; i++) { @@ -252,6 +260,11 @@ public class PagedViewCellLayout extends ViewGroup { requestLayout(); } + public void setGap(int widthGap, int heightGap) { + mWidthGap = widthGap; + mHeightGap = heightGap; + } + public void setCellDimensions(int width, int height) { mCellWidth = width; mCellHeight = height; diff --git a/src/com/android/launcher2/PagedViewIcon.java b/src/com/android/launcher2/PagedViewIcon.java index 0f7898b271..010c573f1b 100644 --- a/src/com/android/launcher2/PagedViewIcon.java +++ b/src/com/android/launcher2/PagedViewIcon.java @@ -54,6 +54,7 @@ public class PagedViewIcon extends TextView implements Checkable { private Object mIconCacheKey; private PagedViewIconCache mIconCache; + private int mScaledIconSize; private int mAlpha; private int mHolographicAlpha; @@ -82,6 +83,7 @@ public class PagedViewIcon extends TextView implements Checkable { mHoloOutlineColor = a.getColor(R.styleable.PagedViewIcon_outlineColor, 0); mCheckedBlurColor = a.getColor(R.styleable.PagedViewIcon_checkedBlurColor, 0); mCheckedOutlineColor = a.getColor(R.styleable.PagedViewIcon_checkedOutlineColor, 0); + mScaledIconSize = a.getDimensionPixelSize(R.styleable.PagedViewIcon_scaledIconSize, 64); a.recycle(); if (sHolographicOutlineHelper == null) { @@ -93,13 +95,21 @@ public class PagedViewIcon extends TextView implements Checkable { setBackgroundDrawable(null); } - public void applyFromApplicationInfo(ApplicationInfo info, PagedViewIconCache cache) { + public void applyFromApplicationInfo(ApplicationInfo info, PagedViewIconCache cache, + boolean scaleUp) { mIconCache = cache; mIconCacheKey = info; mHolographicOutline = mIconCache.getOutline(mIconCacheKey); + Bitmap icon; + if (scaleUp) { + icon = Bitmap.createScaledBitmap(info.iconBitmap, mScaledIconSize, + mScaledIconSize, true); + } else { + icon = info.iconBitmap; + } setCompoundDrawablesWithIntrinsicBounds(null, - new FastBitmapDrawable(info.iconBitmap), null, null); + new FastBitmapDrawable(icon), null, null); setText(info.title); setTag(info); } diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index d123374d20..42a6f1b70d 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -715,7 +715,10 @@ public class Workspace extends SmoothPagedView final int screenCount = getChildCount(); float totalWidth = screenCount * scaledPageWidth + (screenCount - 1) * extraScaledSpacing; - float newY = getResources().getDimension(R.dimen.smallScreenVerticalMargin); + boolean isPortrait = getMeasuredHeight() > getMeasuredWidth(); + float newY = (isPortrait ? + getResources().getDimension(R.dimen.smallScreenVerticalMarginPortrait) : + getResources().getDimension(R.dimen.smallScreenVerticalMarginLandscape)); float finalAlpha = 1.0f; float extraShrinkFactor = 1.0f; if (shrinkPosition == ShrinkPosition.SHRINK_TO_BOTTOM_VISIBLE) { From 6b4b25d093b0a3008d6e275438c79db9c21daab9 Mon Sep 17 00:00:00 2001 From: Michael Jurka Date: Wed, 20 Oct 2010 18:19:45 -0700 Subject: [PATCH 4/4] fixed bug with adding items in customize mode also, no longer mark items as checked in customize mode Bug: 3116708 Change-Id: I01b935ba8bfb450dfab9175a7eb5b7619ad187a6 --- .../android/launcher2/CustomizePagedView.java | 37 +++++-------------- src/com/android/launcher2/Launcher.java | 22 +++-------- 2 files changed, 16 insertions(+), 43 deletions(-) diff --git a/src/com/android/launcher2/CustomizePagedView.java b/src/com/android/launcher2/CustomizePagedView.java index f832b62bdf..cc21276be6 100644 --- a/src/com/android/launcher2/CustomizePagedView.java +++ b/src/com/android/launcher2/CustomizePagedView.java @@ -334,35 +334,18 @@ public class CustomizePagedView extends PagedView } if (enterChoiceMode) { - if (v instanceof Checkable) { - final Checkable c = (Checkable) v; - final boolean wasChecked = c.isChecked(); - resetCheckedGrandchildren(); - c.setChecked(!wasChecked); + final ItemInfo itemInfo = (ItemInfo) v.getTag(); - // End the current choice mode when we have no items selected - /*if (!c.isChecked()) { - endChoiceMode(); - } else if (isChoiceMode(CHOICE_MODE_NONE)) { - endChoiceMode(); - startChoiceMode(CHOICE_MODE_SINGLE, this); - }*/ - mChoiceMode = CHOICE_MODE_SINGLE; + Workspace w = mLauncher.getWorkspace(); + int currentWorkspaceScreen = mLauncher.getCurrentWorkspaceScreen(); + final CellLayout cl = (CellLayout)w.getChildAt(currentWorkspaceScreen); - Workspace w = mLauncher.getWorkspace(); - int currentWorkspaceScreen = mLauncher.getCurrentWorkspaceScreen(); - final CellLayout cl = (CellLayout)w.getChildAt(currentWorkspaceScreen); - cl.setHover(true); - - animateClickFeedback(v, new Runnable() { - @Override - public void run() { - cl.setHover(false); - mLauncher.onWorkspaceClick(cl); - mChoiceMode = CHOICE_MODE_NONE; - } - }); - } + animateClickFeedback(v, new Runnable() { + @Override + public void run() { + mLauncher.addExternalItemToScreen(itemInfo, cl); + } + }); return; } diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index 6fcf4329b5..2688e54a3e 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -2669,24 +2669,14 @@ public final class Launcher extends Activity } } - void onWorkspaceClick(CellLayout layout) { - Object itemInfo = mAllAppsPagedView.getChosenItem(); - if (itemInfo == null) { - itemInfo = mCustomizePagedView.getChosenItem(); + void addExternalItemToScreen(ItemInfo itemInfo, CellLayout layout) { + if (!mWorkspace.addExternalItemToScreen(itemInfo, layout)) { + showOutOfSpaceMessage(); } + } - if (itemInfo == null) { - // No items are chosen in All Apps or Customize, so just zoom into the workspace - showWorkspace(true, layout); - } else { - // Act as if the chosen item was dropped on the given CellLayout - if (mWorkspace.addExternalItemToScreen(itemInfo, layout)) { - mAllAppsPagedView.endChoiceMode(); - mCustomizePagedView.endChoiceMode(); - } else { - showOutOfSpaceMessage(); - } - } + void onWorkspaceClick(CellLayout layout) { + showWorkspace(true, layout); } private void updateButtonWithIconFromExternalActivity(