summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3
diff options
context:
space:
mode:
authorAdam Cohen <adamcohen@google.com>2014-07-21 17:44:06 -0700
committerAdam Cohen <adamcohen@google.com>2014-08-10 18:29:36 -0700
commit9bfdb76aaf5c8679b8f2ee3a9a3df2becefb947a (patch)
treef7a8c90e206701c2129eb5c7ed4956c265478329 /src/com/android/launcher3
parent6075170b838bfe7a040bbff25c2c22859b7d6ee5 (diff)
downloadandroid_packages_apps_Trebuchet-9bfdb76aaf5c8679b8f2ee3a9a3df2becefb947a.tar.gz
android_packages_apps_Trebuchet-9bfdb76aaf5c8679b8f2ee3a9a3df2becefb947a.tar.bz2
android_packages_apps_Trebuchet-9bfdb76aaf5c8679b8f2ee3a9a3df2becefb947a.zip
Polishing the AllApps transition
-> separating HW layers during animation to be siblings instead of parent-child (was destroying parent layer on each frame) -> Unifying material transition with pre-L, everything is the same, just missing the reveal. Change-Id: I8f7d5e658c2d9298bea83ce8199cb35e6fc0d44e
Diffstat (limited to 'src/com/android/launcher3')
-rw-r--r--src/com/android/launcher3/AppsCustomizePagedView.java41
-rw-r--r--src/com/android/launcher3/AppsCustomizeTabHost.java22
-rw-r--r--src/com/android/launcher3/DeviceProfile.java19
-rw-r--r--src/com/android/launcher3/Launcher.java337
-rw-r--r--src/com/android/launcher3/PagedView.java3
5 files changed, 162 insertions, 260 deletions
diff --git a/src/com/android/launcher3/AppsCustomizePagedView.java b/src/com/android/launcher3/AppsCustomizePagedView.java
index 0e9969697..24f90c341 100644
--- a/src/com/android/launcher3/AppsCustomizePagedView.java
+++ b/src/com/android/launcher3/AppsCustomizePagedView.java
@@ -213,6 +213,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
int mWidgetLoadingId = -1;
PendingAddWidgetInfo mCreateWidgetInfo = null;
private boolean mDraggingWidget = false;
+ boolean mPageBackgroundsVisible;
private Toast mWidgetInstructionToast;
@@ -1003,12 +1004,26 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
int heightSpec = MeasureSpec.makeMeasureSpec(mContentHeight, MeasureSpec.AT_MOST);
layout.setMinimumWidth(getPageContentWidth());
layout.measure(widthSpec, heightSpec);
- layout.setPadding(mAllAppsPadding.left, mAllAppsPadding.top, mAllAppsPadding.right,
- mAllAppsPadding.bottom);
- setVisibilityOnChildren(layout, View.VISIBLE);
Resources res = getContext().getResources();
- layout.setBackground(res.getDrawable(R.drawable.quantum_panel));
+ Drawable bg = res.getDrawable(R.drawable.quantum_panel);
+ if (bg != null) {
+ layout.setBackground(bg);
+ bg.setVisible(mPageBackgroundsVisible, false);
+ }
+
+ setVisibilityOnChildren(layout, View.VISIBLE);
+ }
+
+ public void setPageBackgroundsVisible(boolean visible) {
+ mPageBackgroundsVisible = visible;
+ int childCount = getChildCount();
+ for (int i = 0; i < childCount; ++i) {
+ Drawable bg = getChildAt(i).getBackground();
+ if (bg != null) {
+ bg.setVisible(visible, false);
+ }
+ }
}
public void syncAppsPageItems(int page, boolean immediate) {
@@ -1438,24 +1453,6 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
v.setRotationY(0f);
}
}
-
- // TODO: clean this up
- alpha = 1;
- translationX = 0;
- scale = 1;
-
- v.setTranslationX(translationX);
- v.setScaleX(scale);
- v.setScaleY(scale);
- v.setAlpha(alpha);
-
- // If the view has 0 alpha, we set it to be invisible so as to prevent
- // it from accepting touches
- if (alpha == 0) {
- v.setVisibility(INVISIBLE);
- } else if (v.getVisibility() != VISIBLE) {
- v.setVisibility(VISIBLE);
- }
}
}
diff --git a/src/com/android/launcher3/AppsCustomizeTabHost.java b/src/com/android/launcher3/AppsCustomizeTabHost.java
index 283f4ed2f..629bcdb1d 100644
--- a/src/com/android/launcher3/AppsCustomizeTabHost.java
+++ b/src/com/android/launcher3/AppsCustomizeTabHost.java
@@ -181,9 +181,6 @@ public class AppsCustomizeTabHost extends FrameLayout implements LauncherTransit
@Override
public void onLauncherTransitionStart(Launcher l, boolean animated, boolean toWorkspace) {
mPagedView.onLauncherTransitionStart(l, animated, toWorkspace);
- if (animated && !Utilities.isLmp()) {
- enableAndBuildHardwareLayer();
- }
}
@Override
@@ -195,9 +192,6 @@ public class AppsCustomizeTabHost extends FrameLayout implements LauncherTransit
public void onLauncherTransitionEnd(Launcher l, boolean animated, boolean toWorkspace) {
mPagedView.onLauncherTransitionEnd(l, animated, toWorkspace);
mInTransition = false;
- if (animated && !Utilities.isLmp()) {
- setLayerType(LAYER_TYPE_NONE, null);
- }
if (!toWorkspace) {
// Make sure adjacent pages are loaded (we wait until after the transition to
@@ -241,20 +235,4 @@ public class AppsCustomizeTabHost extends FrameLayout implements LauncherTransit
throw new RuntimeException("Failed; can't get z-order of views");
}
}
-
- private void enableAndBuildHardwareLayer() {
- // isHardwareAccelerated() checks if we're attached to a window and if that
- // window is HW accelerated-- we were sometimes not attached to a window
- // and buildLayer was throwing an IllegalStateException
- if (isHardwareAccelerated()) {
- // Turn on hardware layers for performance
- setLayerType(LAYER_TYPE_HARDWARE, null);
-
- // force building the layer, so you don't get a blip early in an animation
- // when the layer is created layer
- buildLayer();
- }
- }
-
-
}
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index c0f505481..018fcfcbc 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -775,6 +775,11 @@ public class DeviceProfile {
AppsCustomizePagedView pagedView = (AppsCustomizePagedView)
host.findViewById(R.id.apps_customize_pane_content);
+
+ FrameLayout fakePageContainer = (FrameLayout)
+ host.findViewById(R.id.fake_page_container);
+ FrameLayout fakePage = (FrameLayout) host.findViewById(R.id.fake_page);
+
padding = new Rect();
if (pagedView != null) {
// Constrain the dimensions of all apps so that it does not span the full width
@@ -790,16 +795,24 @@ public class DeviceProfile {
if ((isTablet() || isLandscape) && gridPaddingLR > (allAppsCellWidthPx / 4)) {
padding.left = padding.right = gridPaddingLR;
}
+
// The icons are centered, so we can't just offset by the page indicator height
// because the empty space will actually be pageIndicatorHeight + paddingTB
padding.bottom = Math.max(0, pageIndicatorHeight - paddingTB);
- pagedView.setAllAppsPadding(padding);
+
pagedView.setWidgetsPageIndicatorPadding(pageIndicatorHeight);
+ fakePage.setBackground(res.getDrawable(R.drawable.quantum_panel));
// Horizontal padding for the whole paged view
- int pagedViewPadding =
+ int pagedFixedViewPadding =
res.getDimensionPixelSize(R.dimen.apps_customize_horizontal_padding);
- pagedView.setPadding(pagedViewPadding, 0, pagedViewPadding, 0);
+
+ padding.left += pagedFixedViewPadding;
+ padding.right += pagedFixedViewPadding;
+
+ pagedView.setPadding(padding.left, padding.top, padding.right, padding.bottom);
+ fakePageContainer.setPadding(padding.left, padding.top, padding.right, padding.bottom);
+
}
}
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 0ab665d74..75ba8fd99 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -92,7 +92,9 @@ import android.view.Window;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityEvent;
import android.view.animation.AccelerateDecelerateInterpolator;
+import android.view.animation.AccelerateInterpolator;
import android.view.animation.DecelerateInterpolator;
+import android.view.animation.LinearInterpolator;
import android.view.inputmethod.InputMethodManager;
import android.widget.Advanceable;
import android.widget.FrameLayout;
@@ -3065,16 +3067,6 @@ public class Launcher extends Activity
return (mState == State.APPS_CUSTOMIZE) || (mOnResumeState == State.APPS_CUSTOMIZE);
}
- /**
- * Helper method for the cameraZoomIn/cameraZoomOut animations
- * @param view The view being animated
- * @param scaleFactor The scale factor used for the zoom
- */
- private void setPivotsForZoom(View view, float scaleFactor) {
- view.setPivotX(view.getWidth() / 2.0f);
- view.setPivotY(view.getHeight() / 2.0f);
- }
-
private void setWorkspaceBackground(boolean workspace) {
mLauncherView.setBackground(workspace ?
mWorkspaceBackgroundDrawable : null);
@@ -3185,6 +3177,8 @@ public class Launcher extends Activity
final int duration = res.getInteger(R.integer.config_appsCustomizeZoomInTime);
final int fadeDuration = res.getInteger(R.integer.config_appsCustomizeFadeInTime);
final int revealDuration = res.getInteger(R.integer.config_appsCustomizeRevealTime);
+ final int itemsAlphaStagger =
+ res.getInteger(R.integer.config_appsCustomizeItemsAlphaStagger);
final float scale = (float) res.getInteger(R.integer.config_appsCustomizeZoomScaleFactor);
final View fromView = mWorkspace;
@@ -3192,8 +3186,6 @@ public class Launcher extends Activity
final int startDelay =
res.getInteger(R.integer.config_workspaceAppsCustomizeAnimationStagger);
- setPivotsForZoom(toView, scale);
-
Workspace.State workspaceState = contentType == AppsCustomizePagedView.ContentType.Widgets ?
Workspace.State.OVERVIEW_HIDDEN : Workspace.State.NORMAL_HIDDEN;
Animator workspaceAnim =
@@ -3205,146 +3197,92 @@ public class Launcher extends Activity
}
if (animated) {
- if (!material) {
- toView.setScaleX(scale);
- toView.setScaleY(scale);
- final LauncherViewPropertyAnimator scaleAnim =
- new LauncherViewPropertyAnimator(toView);
- scaleAnim.
- scaleX(1f).scaleY(1f).
- setDuration(duration).
- setInterpolator(new Workspace.ZoomOutInterpolator());
+ mStateAnimation = LauncherAnimUtils.createAnimatorSet();
- toView.setVisibility(View.VISIBLE);
- toView.setAlpha(0f);
- final ObjectAnimator alphaAnim = LauncherAnimUtils
- .ofFloat(toView, "alpha", 0f, 1f)
- .setDuration(fadeDuration);
- alphaAnim.setInterpolator(new DecelerateInterpolator(1.5f));
- alphaAnim.addUpdateListener(new AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator animation) {
- if (animation == null) {
- throw new RuntimeException("animation is null");
- }
- float t = (Float) animation.getAnimatedValue();
- dispatchOnLauncherTransitionStep(fromView, t);
- dispatchOnLauncherTransitionStep(toView, t);
- }
- });
+ final AppsCustomizePagedView content = (AppsCustomizePagedView)
+ toView.findViewById(R.id.apps_customize_pane_content);
- // toView should appear right at the end of the workspace shrink
- // animation
- mStateAnimation = LauncherAnimUtils.createAnimatorSet();
- mStateAnimation.play(scaleAnim).after(startDelay);
- mStateAnimation.play(alphaAnim).after(startDelay);
+ final View page = content.getPageAt(content.getCurrentPage());
+ final View revealView = toView.findViewById(R.id.fake_page);
- mStateAnimation.addListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationStart(Animator animation) {
- // Prepare the position
- toView.setTranslationX(0.0f);
- toView.setTranslationY(0.0f);
- toView.setVisibility(View.VISIBLE);
- toView.bringToFront();
- }
- @Override
- public void onAnimationEnd(Animator animation) {
- dispatchOnLauncherTransitionEnd(fromView, animated, false);
- dispatchOnLauncherTransitionEnd(toView, animated, false);
+ // Hide the real page background, and swap in the fake one
+ revealView.setVisibility(View.VISIBLE);
+ content.setPageBackgroundsVisible(false);
- // Hide the search bar
- if (mSearchDropTargetBar != null) {
- mSearchDropTargetBar.hideSearchBar(false);
- }
- }
- });
- } else {
- int width = toView.getMeasuredWidth();
- int height = toView.getMeasuredHeight();
- float revealRadius = (float) Math.sqrt((width * width) / 4 + height * height);
-
- mStateAnimation = LauncherAnimUtils.createAnimatorSet();
-
- AppsCustomizePagedView content = (AppsCustomizePagedView)
- toView.findViewById(R.id.apps_customize_pane_content);
+ int width = revealView.getMeasuredWidth();
+ int height = revealView.getMeasuredHeight();
- View page = content.getPageAt(content.getCurrentPage());
- View revealView = content;
+ float revealRadius = (float) Math.sqrt((width * width) / 4 + (height * height) / 4);
+ float yDrift = height / 2f;
- float yDrift = height / 2f - 400;
+ revealView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+ PropertyValuesHolder panelAlpha = PropertyValuesHolder.ofFloat("alpha", 0.4f, 1f);
+ PropertyValuesHolder panelDrift =
+ PropertyValuesHolder.ofFloat("translationY", yDrift, 0f);
- LauncherViewPropertyAnimator panelAlphaAndDrift =
- new LauncherViewPropertyAnimator(revealView);
- revealView.setTranslationY(yDrift);
- revealView.setAlpha(0.3f);
- panelAlphaAndDrift.alpha(1)
- .translationY(0)
- .setDuration(revealDuration)
- .setInterpolator(new LogDecelerateInterpolator(100, 0));
+ ObjectAnimator panelAlphaAndDrift =
+ ObjectAnimator.ofPropertyValuesHolder(revealView, panelAlpha, panelDrift);
+ panelAlphaAndDrift.setDuration(revealDuration);
+ panelAlphaAndDrift.setInterpolator(new LogDecelerateInterpolator(100, 0));
- mStateAnimation.play(panelAlphaAndDrift);
+ mStateAnimation.play(panelAlphaAndDrift);
- if (page instanceof CellLayout) {
- CellLayout cellLayout = (CellLayout) page;
- cellLayout.enableHardwareLayer(true);
+ page.setVisibility(View.VISIBLE);
+ page.setLayerType(View.LAYER_TYPE_HARDWARE, null);
- View iconsView = cellLayout.getShortcutsAndWidgets();
- iconsView.setAlpha(0f);
+ ObjectAnimator pageDrift = ObjectAnimator.ofFloat(page, "translationY", yDrift, 0);
+ pageDrift.setDuration(revealDuration);
+ pageDrift.setInterpolator(new LogDecelerateInterpolator(100, 0));
+ mStateAnimation.play(pageDrift);
- LauncherViewPropertyAnimator iconsAlpha =
- new LauncherViewPropertyAnimator(iconsView);
- iconsAlpha.alpha(1f)
- .setDuration(revealDuration - 100)
- .setInterpolator(new LogDecelerateInterpolator(100, 0));
- mStateAnimation.play(iconsAlpha);
- }
-
- View pageIndicators = toView.findViewById(R.id.apps_customize_page_indicator);
- pageIndicators.setAlpha(0f);
- final LauncherViewPropertyAnimator indicatorsAlpha =
- new LauncherViewPropertyAnimator(pageIndicators);
- indicatorsAlpha.alpha(1f);
- indicatorsAlpha.setDuration(revealDuration);
- mStateAnimation.play(indicatorsAlpha);
+ // TODO (adamcohen): remove this 0.01f hack once fw is fixed
+ // it's there to work around a framework bug (16918357)
+ page.setAlpha(0.01f);
+ ObjectAnimator itemsAlpha = ObjectAnimator.ofFloat(page, "alpha", 0.01f, 1f);
+ itemsAlpha.setDuration(revealDuration);
+ itemsAlpha.setInterpolator(new AccelerateInterpolator(1.5f));
+ itemsAlpha.setStartDelay(itemsAlphaStagger);
+ mStateAnimation.play(itemsAlpha);
- width = revealView.getMeasuredWidth();
+ View pageIndicators = fromView.findViewById(R.id.apps_customize_page_indicator);
+ ObjectAnimator indicatorsAlpha =
+ ObjectAnimator.ofFloat(pageIndicators, "alpha", 1f);
+ indicatorsAlpha.setDuration(revealDuration);
+ mStateAnimation.play(indicatorsAlpha);
- Animator reveal =
+ if (material) {
+ ValueAnimator reveal = (ValueAnimator)
ViewAnimationUtils.createCircularReveal(revealView, width / 2,
- height / 2 + 100, 0f, revealRadius);
+ height / 2, 0f, revealRadius);
reveal.setDuration(revealDuration);
reveal.setInterpolator(new LogDecelerateInterpolator(100, 0));
-
- toView.setTranslationX(0);
- toView.setTranslationY(0);
- toView.setAlpha(1f);
- // toView should appear right at the end of the workspace shrink
- // animation
mStateAnimation.play(reveal);
+ }
- reveal.addListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationStart(Animator animation) {
- // Prepare the position
- toView.bringToFront();
- toView.setVisibility(View.VISIBLE);
- }
- });
+ mStateAnimation.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ dispatchOnLauncherTransitionEnd(fromView, animated, false);
+ dispatchOnLauncherTransitionEnd(toView, animated, false);
- mStateAnimation.addListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- dispatchOnLauncherTransitionEnd(fromView, animated, false);
- dispatchOnLauncherTransitionEnd(toView, animated, false);
+ revealView.setVisibility(View.INVISIBLE);
+ revealView.setLayerType(View.LAYER_TYPE_NONE, null);
+ page.setLayerType(View.LAYER_TYPE_NONE, null);
+ content.setPageBackgroundsVisible(true);
- // Hide the search bar
- if (mSearchDropTargetBar != null) {
- mSearchDropTargetBar.hideSearchBar(false);
- }
+ // Hide the search bar
+ if (mSearchDropTargetBar != null) {
+ mSearchDropTargetBar.hideSearchBar(false);
}
- });
- }
+ }
+
+ @Override
+ public void onAnimationStart(Animator animation) {
+ // Prepare the position
+ toView.bringToFront();
+ toView.setVisibility(View.VISIBLE);
+ }
+ });
boolean delayAnim = false;
if (workspaceAnim != null) {
@@ -3368,13 +3306,14 @@ public class Launcher extends Activity
// we waited for a layout/draw pass
if (mStateAnimation != stateAnimation)
return;
- setPivotsForZoom(toView, scale);
dispatchOnLauncherTransitionStart(fromView, animated, false);
dispatchOnLauncherTransitionStart(toView, animated, false);
LauncherAnimUtils.startAnimationAfterNextDraw(mStateAnimation, toView);
}
};
if (delayAnim) {
+ toView.bringToFront();
+ toView.setVisibility(View.VISIBLE);
final ViewTreeObserver observer = toView.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
public void onGlobalLayout() {
@@ -3429,6 +3368,8 @@ public class Launcher extends Activity
final int duration = res.getInteger(R.integer.config_appsCustomizeZoomOutTime);
final int fadeOutDuration = res.getInteger(R.integer.config_appsCustomizeFadeOutTime);
final int revealDuration = res.getInteger(R.integer.config_appsCustomizeRevealTime);
+ final int itemsAlphaStagger =
+ res.getInteger(R.integer.config_appsCustomizeItemsAlphaStagger);
final float scaleFactor = (float)
res.getInteger(R.integer.config_appsCustomizeZoomScaleFactor);
@@ -3445,116 +3386,84 @@ public class Launcher extends Activity
toState, animated);
}
- setPivotsForZoom(fromView, scaleFactor);
showHotseat(animated);
if (animated) {
- if (!material) {
- final LauncherViewPropertyAnimator scaleAnim =
- new LauncherViewPropertyAnimator(fromView);
- scaleAnim.
- scaleX(scaleFactor).scaleY(scaleFactor).
- setDuration(duration).
- setInterpolator(new Workspace.ZoomInInterpolator());
-
- final ObjectAnimator alphaAnim = LauncherAnimUtils
- .ofFloat(fromView, "alpha", 1f, 0f)
- .setDuration(fadeOutDuration);
- alphaAnim.setInterpolator(new AccelerateDecelerateInterpolator());
- alphaAnim.addUpdateListener(new AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator animation) {
- float t = 1f - (Float) animation.getAnimatedValue();
- dispatchOnLauncherTransitionStep(fromView, t);
- dispatchOnLauncherTransitionStep(toView, t);
- }
- });
-
- mStateAnimation = LauncherAnimUtils.createAnimatorSet();
+ mStateAnimation = LauncherAnimUtils.createAnimatorSet();
- dispatchOnLauncherTransitionPrepare(fromView, animated, true);
- dispatchOnLauncherTransitionPrepare(toView, animated, true);
- mAppsCustomizeContent.stopScrolling();
-
- mStateAnimation.playTogether(scaleAnim, alphaAnim);
- } else {
- mStateAnimation = LauncherAnimUtils.createAnimatorSet();
+ final AppsCustomizePagedView content = (AppsCustomizePagedView)
+ fromView.findViewById(R.id.apps_customize_pane_content);
- int width = fromView.getMeasuredWidth();
- int height = fromView.getMeasuredHeight();
- float revealRadius = (float) Math.sqrt((width * width) / 4 + height * height);
+ final View page = content.getPageAt(content.getNextPage());
+ final View revealView = fromView.findViewById(R.id.fake_page);
- AppsCustomizePagedView content = (AppsCustomizePagedView)
- fromView.findViewById(R.id.apps_customize_pane_content);
+ int width = revealView.getMeasuredWidth();
+ int height = revealView.getMeasuredHeight();
+ float revealRadius = (float) Math.sqrt((width * width) / 4 + (height * height) / 4);
- final View page = content.getPageAt(content.getNextPage());
- View revealView = page;
+ // Hide the real page background, and swap in the fake one
+ revealView.setVisibility(View.VISIBLE);
+ content.setPageBackgroundsVisible(false);
- float yDrift = height / 2f - 400;
+ float yDrift = height / 2f;
- LauncherViewPropertyAnimator panelAlphaAndDrift =
- new LauncherViewPropertyAnimator(revealView);
- revealView.setTranslationY(0);
- revealView.setAlpha(1);
- panelAlphaAndDrift.alpha(0)
- .translationY(yDrift)
- .setDuration(revealDuration)
- .setInterpolator(new LogDecelerateInterpolator(100, 0));
+ revealView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
- mStateAnimation.play(panelAlphaAndDrift);
+ PropertyValuesHolder panelAlpha = PropertyValuesHolder.ofFloat(View.ALPHA, 1f, 0f);
+ PropertyValuesHolder panelDrift =
+ PropertyValuesHolder.ofFloat(View.TRANSLATION_Y, 0, yDrift);
+ ObjectAnimator panelAlphaAndDrift =
+ ObjectAnimator.ofPropertyValuesHolder(revealView, panelAlpha, panelDrift);
+ panelAlphaAndDrift.setDuration(revealDuration);
- if (page instanceof CellLayout) {
- final CellLayout cellLayout = (CellLayout) page;
- cellLayout.enableHardwareLayer(true);
+ panelAlphaAndDrift.setInterpolator(new LogDecelerateInterpolator(100, 0));
+ panelAlphaAndDrift.setStartDelay(itemsAlphaStagger);
- final View iconsView = cellLayout.getShortcutsAndWidgets();
+ mStateAnimation.play(panelAlphaAndDrift);
- LauncherViewPropertyAnimator iconsAlpha =
- new LauncherViewPropertyAnimator(iconsView);
- iconsAlpha.alpha(0f)
- .setDuration(revealDuration - 100)
- .setInterpolator(new LogDecelerateInterpolator(100, 0));
+ page.setLayerType(View.LAYER_TYPE_HARDWARE, null);
- mStateAnimation.play(iconsAlpha);
+ ObjectAnimator pageDrift = ObjectAnimator.ofFloat(page, View.TRANSLATION_Y, 0, yDrift);
+ pageDrift.setDuration(revealDuration);
+ pageDrift.setInterpolator(new LogDecelerateInterpolator(100, 0));
+ pageDrift.setStartDelay(itemsAlphaStagger);
+ mStateAnimation.play(pageDrift);
- mStateAnimation.addListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- cellLayout.setTranslationY(0);
- cellLayout.setAlpha(1f);
- iconsView.setAlpha(1f);
- }
- });
- }
+ page.setAlpha(1f);
+ ObjectAnimator itemsAlpha = ObjectAnimator.ofFloat(page, View.ALPHA, 1f, 0f);
+ itemsAlpha.setDuration(revealDuration);
+ itemsAlpha.setInterpolator(new LogDecelerateInterpolator(100, 0));
+ mStateAnimation.play(itemsAlpha);
- View pageIndicators = fromView.findViewById(R.id.apps_customize_page_indicator);
- final LauncherViewPropertyAnimator indicatorsAlpha =
- new LauncherViewPropertyAnimator(pageIndicators);
- indicatorsAlpha.alpha(0f);
- indicatorsAlpha.setDuration(revealDuration);
- indicatorsAlpha.setInterpolator(new DecelerateInterpolator(1.5f));
- mStateAnimation.play(indicatorsAlpha);
+ View pageIndicators = fromView.findViewById(R.id.apps_customize_page_indicator);
+ ObjectAnimator indicatorsAlpha =
+ ObjectAnimator.ofFloat(pageIndicators, View.ALPHA, 0f);
+ indicatorsAlpha.setDuration(revealDuration);
+ indicatorsAlpha.setInterpolator(new DecelerateInterpolator(1.5f));
+ mStateAnimation.play(indicatorsAlpha);
- width = revealView.getMeasuredWidth();
+ width = revealView.getMeasuredWidth();
+ if (material) {
Animator reveal =
ViewAnimationUtils.createCircularReveal(revealView, width / 2,
height / 2 + 100, revealRadius, 0f);
reveal.setInterpolator(new LogDecelerateInterpolator(100, 0));
reveal.setDuration(revealDuration);
+ reveal.setStartDelay(itemsAlphaStagger);
reveal.addListener(new AnimatorListenerAdapter() {
- @Override
public void onAnimationEnd(Animator animation) {
- fromView.setVisibility(View.GONE);
+ revealView.setVisibility(View.INVISIBLE);
}
});
- dispatchOnLauncherTransitionPrepare(fromView, animated, true);
- dispatchOnLauncherTransitionPrepare(toView, animated, true);
- mAppsCustomizeContent.stopScrolling();
-
mStateAnimation.play(reveal);
}
+
+ dispatchOnLauncherTransitionPrepare(fromView, animated, true);
+ dispatchOnLauncherTransitionPrepare(toView, animated, true);
+ mAppsCustomizeContent.stopScrolling();
+
if (workspaceAnim != null) {
mStateAnimation.play(workspaceAnim);
}
@@ -3568,6 +3477,10 @@ public class Launcher extends Activity
if (onCompleteRunnable != null) {
onCompleteRunnable.run();
}
+
+ revealView.setLayerType(View.LAYER_TYPE_NONE, null);
+ page.setLayerType(View.LAYER_TYPE_NONE, null);
+ content.setPageBackgroundsVisible(true);
mAppsCustomizeContent.updateCurrentPageScroll();
}
});
diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java
index 1037d9809..4e34628da 100644
--- a/src/com/android/launcher3/PagedView.java
+++ b/src/com/android/launcher3/PagedView.java
@@ -339,8 +339,9 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
// Hook up the page indicator
ViewGroup parent = (ViewGroup) getParent();
+ ViewGroup grandParent = (ViewGroup) parent.getParent();
if (mPageIndicator == null && mPageIndicatorViewId > -1) {
- mPageIndicator = (PageIndicator) parent.findViewById(mPageIndicatorViewId);
+ mPageIndicator = (PageIndicator) grandParent.findViewById(mPageIndicatorViewId);
mPageIndicator.removeAllMarkers(mAllowPagedViewAnimations);
ArrayList<PageIndicator.PageMarkerResources> markers =