Turning on hardware layers for the workspace
- Obsoletes need for CachedViewGroup and CachedTextView on workspace as well
Bug #3413433
diff --git a/src/com/android/launcher2/BubbleTextView.java b/src/com/android/launcher2/BubbleTextView.java
index f3aa342..a842d78 100644
--- a/src/com/android/launcher2/BubbleTextView.java
+++ b/src/com/android/launcher2/BubbleTextView.java
@@ -31,13 +31,14 @@
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
+import android.widget.TextView;
/**
* TextView that draws a bubble behind the text. We cannot use a LineBackgroundSpan
* because we want to make the bubble taller than the text and TextView's clip is
* too aggressive.
*/
-public class BubbleTextView extends CachedTextView implements VisibilityChangedBroadcaster {
+public class BubbleTextView extends TextView implements VisibilityChangedBroadcaster {
static final float CORNER_RADIUS = 4.0f;
static final float SHADOW_LARGE_RADIUS = 4.0f;
static final float SHADOW_SMALL_RADIUS = 1.75f;
@@ -98,19 +99,6 @@
mPressedGlowColor = res.getColor(R.color.workspace_item_pressed_glow_color);
}
- protected int getCacheTopPadding() {
- return (int) PADDING_V;
- }
- protected int getCacheBottomPadding() {
- return (int) (PADDING_V + SHADOW_LARGE_RADIUS + SHADOW_Y_OFFSET);
- }
- protected int getCacheLeftPadding() {
- return (int) (PADDING_H + SHADOW_LARGE_RADIUS);
- }
- protected int getCacheRightPadding() {
- return (int) (PADDING_H + SHADOW_LARGE_RADIUS);
- }
-
public void applyFromShortcutInfo(ShortcutInfo info, IconCache iconCache) {
Bitmap b = info.getIcon(iconCache);
@@ -269,33 +257,34 @@
mScrollX - padding, mScrollY - padding, mTempPaint);
canvas.restore();
}
- if (isBuildingCache()) {
- // We enhance the shadow by drawing the shadow twice
- this.setShadowLayer(SHADOW_LARGE_RADIUS, 0.0f, SHADOW_Y_OFFSET, SHADOW_LARGE_COLOUR);
- super.draw(canvas);
- this.setShadowLayer(SHADOW_SMALL_RADIUS, 0.0f, 0.0f, SHADOW_SMALL_COLOUR);
- super.draw(canvas);
- } else {
- final Drawable background = mBackground;
- if (background != null) {
- final int scrollX = mScrollX;
- final int scrollY = mScrollY;
- if (mBackgroundSizeChanged) {
- background.setBounds(0, 0, mRight - mLeft, mBottom - mTop);
- mBackgroundSizeChanged = false;
- }
+ final Drawable background = mBackground;
+ if (background != null) {
+ final int scrollX = mScrollX;
+ final int scrollY = mScrollY;
- if ((scrollX | scrollY) == 0) {
- background.draw(canvas);
- } else {
- canvas.translate(scrollX, scrollY);
- background.draw(canvas);
- canvas.translate(-scrollX, -scrollY);
- }
+ if (mBackgroundSizeChanged) {
+ background.setBounds(0, 0, mRight - mLeft, mBottom - mTop);
+ mBackgroundSizeChanged = false;
}
- super.draw(canvas);
+
+ if ((scrollX | scrollY) == 0) {
+ background.draw(canvas);
+ } else {
+ canvas.translate(scrollX, scrollY);
+ background.draw(canvas);
+ canvas.translate(-scrollX, -scrollY);
+ }
}
+ // We enhance the shadow by drawing the shadow twice
+ setShadowLayer(SHADOW_LARGE_RADIUS, 0.0f, SHADOW_Y_OFFSET, SHADOW_LARGE_COLOUR);
+ super.draw(canvas);
+ canvas.save(Canvas.CLIP_SAVE_FLAG);
+ canvas.clipRect(mScrollX, mScrollY + getExtendedPaddingTop(), mScrollX + getWidth(),
+ mScrollY + getHeight(), Region.Op.REPLACE);
+ setShadowLayer(SHADOW_SMALL_RADIUS, 0.0f, 0.0f, SHADOW_SMALL_COLOUR);
+ super.draw(canvas);
+ canvas.restore();
}
@Override
diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index 6767cf1..b27770c 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -50,7 +50,7 @@
import java.util.Arrays;
-public class CellLayout extends CachedViewGroup {
+public class CellLayout extends ViewGroup {
static final String TAG = "CellLayout";
private int mCellWidth;
diff --git a/src/com/android/launcher2/CellLayoutChildren.java b/src/com/android/launcher2/CellLayoutChildren.java
index a6f7f42..76a6900 100644
--- a/src/com/android/launcher2/CellLayoutChildren.java
+++ b/src/com/android/launcher2/CellLayoutChildren.java
@@ -44,6 +44,7 @@
public CellLayoutChildren(Context context) {
super(context);
mWallpaperManager = WallpaperManager.getInstance(context);
+ setLayerType(LAYER_TYPE_HARDWARE, null);
}
public void setCellDimensions(int cellWidth, int cellHeight,
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 890bde8..765e4d6 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -281,7 +281,6 @@
@Override
public void onAnimationStart(Animator animation) {
mIsInUnshrinkAnimation = true;
- disableCacheUpdates();
}
@Override
@@ -299,19 +298,13 @@
mDrawCustomizeTrayBackground = false;
}
mWallpaperOffset.setOverrideHorizontalCatchupConstant(false);
- enableCacheUpdates();
mAnimator = null;
}
};
mShrinkAnimationListener = new AnimatorListenerAdapter() {
@Override
- public void onAnimationStart(Animator animation) {
- disableCacheUpdates();
- }
- @Override
public void onAnimationEnd(Animator animation) {
mWallpaperOffset.setOverrideHorizontalCatchupConstant(false);
- enableCacheUpdates();
mAnimator = null;
}
};
@@ -1039,22 +1032,6 @@
}
}
- public void enableCacheUpdates() {
- final int pageCount = getChildCount();
- for (int i = 0; i < pageCount; i++) {
- final CellLayout page = (CellLayout) getChildAt(i);
- page.enableCacheUpdates();
- }
- }
-
- public void disableCacheUpdates() {
- final int pageCount = getChildCount();
- for (int i = 0; i < pageCount; i++) {
- final CellLayout page = (CellLayout) getChildAt(i);
- page.disableCacheUpdates();
- }
- }
-
@Override
protected void onDraw(Canvas canvas) {
updateWallpaperOffsets();