From b6e50c4ed3f17ac6b1e5c20cd01462c41da17412 Mon Sep 17 00:00:00 2001 From: nebkat Date: Sat, 21 Jan 2012 16:53:27 +0000 Subject: Workspace: Zoom In/Out Transition Change-Id: I67675033413b18f265fa3e0967125f850596cced --- src/com/cyanogenmod/trebuchet/Workspace.java | 33 ++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src') diff --git a/src/com/cyanogenmod/trebuchet/Workspace.java b/src/com/cyanogenmod/trebuchet/Workspace.java index 41b66b225..4e006d5cb 100644 --- a/src/com/cyanogenmod/trebuchet/Workspace.java +++ b/src/com/cyanogenmod/trebuchet/Workspace.java @@ -243,6 +243,8 @@ public class Workspace extends PagedView public enum TransitionEffect { Standard, Tablet, + ZoomIn, + ZoomOut, Stack } @@ -1270,6 +1272,31 @@ public class Workspace extends PagedView invalidate(); } + private void screenScrolledZoom(int screenScroll, boolean in) { + boolean isInOverscroll = false; + for (int i = 0; i < getChildCount(); i++) { + CellLayout cl = (CellLayout) getChildAt(i); + if (cl != null) { + float scrollProgress = getScrollProgress(screenScroll, cl, i); + float scale = 1.0f + (in ? -0.2f : 0.1f) * Math.abs(scrollProgress); + + // Extra translation to account for the increase in size + if (!in) { + float translationX = getMeasuredWidth() * 0.1f * -scrollProgress; + cl.setFastTranslationX(translationX); + } + + cl.setFastScaleX(scale); + cl.setFastScaleY(scale); + if (mFadeInAdjacentScreens && !isSmall()) { + float alpha = 1 - Math.abs(scrollProgress); + cl.setFastAlpha(alpha); + } + cl.fastInvalidate(); + } + } + } + private void screenScrolledStack(int screenScroll) { boolean isInOverscroll = false; for (int i = 0; i < getChildCount(); i++) { @@ -1355,6 +1382,12 @@ public class Workspace extends PagedView case Tablet: screenScrolledTablet(screenScroll); break; + case ZoomIn: + screenScrolledZoom(screenScroll, true); + break; + case ZoomOut: + screenScrolledZoom(screenScroll, false); + break; case Stack: screenScrolledStack(screenScroll); break; -- cgit v1.2.3