summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher2/Workspace.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher2/Workspace.java')
-rw-r--r--src/com/android/launcher2/Workspace.java57
1 files changed, 25 insertions, 32 deletions
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 744cf720f..14b77f037 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -46,8 +46,9 @@ import java.util.ArrayList;
* screen contains a number of icons, folders or widgets the user can interact with.
* A workspace is meant to be used with a fixed width only.
*/
-public class Workspace extends ViewGroup implements DropTarget, DragSource, DragScroller,
- TweenCallback {
+public class Workspace extends ViewGroup implements DropTarget, DragSource, DragScroller {
+ private static final String TAG = "Launcher.Workspace";
+
private static final int INVALID_SCREEN = -1;
/**
@@ -66,9 +67,6 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
private Scroller mScroller;
private VelocityTracker mVelocityTracker;
- private SymmetricalLinearTween mTween;
- private int mAlpha = 255;
-
/**
* CellInfo for the cell that is currently being dragged
*/
@@ -150,8 +148,6 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
final ViewConfiguration configuration = ViewConfiguration.get(getContext());
mTouchSlop = configuration.getScaledTouchSlop();
mMaximumVelocity = configuration.getScaledMaximumFlingVelocity();
-
- mTween = new SymmetricalLinearTween(true, 250/*ms*/, this);
}
@Override
@@ -486,12 +482,24 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
int restoreCount = 0;
// For the fade. If view gets setAlpha(), use that instead.
- int alpha = mAlpha;
- if (alpha < 255) {
+ float scale = mScale;
+ if (scale < 0.999f) {
int sx = mScrollX;
+
+ int alpha = (scale < 0.5f) ? (int)(255 * 2 * scale) : 255;
+
restoreCount = canvas.saveLayerAlpha(sx, 0, sx+getWidth(), getHeight(), alpha,
Canvas.HAS_ALPHA_LAYER_SAVE_FLAG | Canvas.CLIP_TO_LAYER_SAVE_FLAG);
restore = true;
+
+ if (scale < 0.999f) {
+ int w = getWidth();
+ w += 2 * mCurrentScreen * w;
+ int h = getHeight();
+ canvas.translate(w/2, h/2);
+ canvas.scale(scale, scale);
+ canvas.translate(-w/2, -h/2);
+ }
}
// ViewGroup.dispatchDraw() supports many features we don't need:
@@ -499,7 +507,8 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
// children, etc. The following implementation attempts to fast-track
// the drawing dispatch by drawing only what we know needs to be drawn.
- boolean fastDraw = mTouchState != TOUCH_STATE_SCROLLING && mNextScreen == INVALID_SCREEN;
+ boolean fastDraw = mTouchState != TOUCH_STATE_SCROLLING && mNextScreen == INVALID_SCREEN
+ && scale > 0.999f;
// If we are not scrolling or flinging, draw only the current screen
if (fastDraw) {
drawChild(canvas, getChildAt(mCurrentScreen), getDrawingTime());
@@ -524,6 +533,12 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
}
}
+ private float mScale = 1.0f;
+ public void setScale(float scale) {
+ mScale = scale;
+ invalidate();
+ }
+
protected void onAttachedToWindow() {
super.onAttachedToWindow();
mDragController.setWindowToken(getWindowToken());
@@ -1335,31 +1350,9 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
}
void show() {
- mTween.start(true);
setVisibility(VISIBLE);
}
void hide() {
- mTween.start(false);
- }
-
- public void onTweenValueChanged(float value, float oldValue) {
- mAlpha = (int)(255*value);
- invalidate();
- }
-
- public void onTweenStarted() {
- // TODO: This conflicts with the cache for drawing. Ref count instead?
- // TODO: Don't cache all three.
- enableChildrenCache();
- }
-
- public void onTweenFinished() {
- // TODO: This conflicts with the cache for drawing. Ref count instead?
- // TODO: Don't cache all three.
- clearChildrenCache();
- if (mAlpha == 0) {
- setVisibility(GONE);
- }
}
}