summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorPatrick Dubroy <dubroy@google.com>2010-10-20 15:02:04 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-10-20 15:02:04 -0700
commitbae3d061cc16ad005302b5eec404c4c0bc3a7421 (patch)
treea6d5497a398d5cde09218fd4914fc039fb69d776 /src/com
parentfd177c1d10085e5e12ff7df27d956a378d1139b1 (diff)
parent8e58e916061cbe2623697efac0924f2aa3753a92 (diff)
downloadandroid_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.java11
-rw-r--r--src/com/android/launcher2/HolographicOutlineHelper.java37
-rw-r--r--src/com/android/launcher2/LauncherApplication.java6
-rw-r--r--src/com/android/launcher2/Workspace.java16
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();