diff options
author | Patrick Dubroy <dubroy@google.com> | 2010-10-20 15:02:04 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-10-20 15:02:04 -0700 |
commit | bae3d061cc16ad005302b5eec404c4c0bc3a7421 (patch) | |
tree | a6d5497a398d5cde09218fd4914fc039fb69d776 /src/com | |
parent | fd177c1d10085e5e12ff7df27d956a378d1139b1 (diff) | |
parent | 8e58e916061cbe2623697efac0924f2aa3753a92 (diff) | |
download | android_packages_apps_Trebuchet-bae3d061cc16ad005302b5eec404c4c0bc3a7421.tar.gz android_packages_apps_Trebuchet-bae3d061cc16ad005302b5eec404c4c0bc3a7421.tar.bz2 android_packages_apps_Trebuchet-bae3d061cc16ad005302b5eec404c4c0bc3a7421.zip |
Merge "Various cleanups in the drag viz code."
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/launcher2/CellLayout.java | 11 | ||||
-rw-r--r-- | src/com/android/launcher2/HolographicOutlineHelper.java | 37 | ||||
-rw-r--r-- | src/com/android/launcher2/LauncherApplication.java | 6 | ||||
-rw-r--r-- | 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 c9be887d3..d94bacfbf 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 ea4b01a4c..bca3f715e 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 ca08378d8..8a18317bc 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 dd622a6aa..d123374d2 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(); |