summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/Hotseat.java11
-rw-r--r--src/com/android/launcher3/Workspace.java65
2 files changed, 64 insertions, 12 deletions
diff --git a/src/com/android/launcher3/Hotseat.java b/src/com/android/launcher3/Hotseat.java
index 1f876fd6b..2aab64d73 100644
--- a/src/com/android/launcher3/Hotseat.java
+++ b/src/com/android/launcher3/Hotseat.java
@@ -25,6 +25,7 @@ import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
+import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;
@@ -175,6 +176,16 @@ public class Hotseat extends FrameLayout {
}
}
+ @Override
+ public boolean onInterceptTouchEvent(MotionEvent ev) {
+ // We don't want any clicks to go through to the hotseat unless the workspace is in
+ // the normal state.
+ if (mLauncher.getWorkspace().isSmall()) {
+ return true;
+ }
+ return false;
+ }
+
void addAllAppsFolder(IconCache iconCache,
ArrayList<AppInfo> allApps, ArrayList<ComponentName> onWorkspace,
Launcher launcher, Workspace workspace) {
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 38275b696..1d5b5ac90 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -17,6 +17,7 @@
package com.android.launcher3;
import android.animation.Animator;
+import android.animation.Animator.AnimatorListener;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.LayoutTransition;
@@ -441,6 +442,13 @@ public class Workspace extends SmoothPagedView
setLayoutTransition(mLayoutTransition);
}
+ void enableLayoutTransitions() {
+ setLayoutTransition(mLayoutTransition);
+ }
+ void disableLayoutTransitions() {
+ setLayoutTransition(null);
+ }
+
@Override
protected int getScrollMode() {
return SmoothPagedView.X_LARGE_MODE;
@@ -488,10 +496,24 @@ public class Workspace extends SmoothPagedView
}
public void removeAllWorkspaceScreens() {
+ // Disable all layout transitions before removing all pages to ensure that we don't get the
+ // transition animations competing with us changing the scroll when we add pages or the
+ // custom content screen
+ disableLayoutTransitions();
+
+ // Since we increment the current page when we call addCustomContentPage via bindScreens
+ // (and other places), we need to adjust the current page back when we clear the pages
+ if (hasCustomContent()) {
+ removeCustomContentPage();
+ }
+
// Remove the pages and clear the screen models
removeAllViews();
mScreenOrder.clear();
mWorkspaceScreens.clear();
+
+ // Re-enable the layout transitions
+ enableLayoutTransitions();
}
public long insertNewWorkspaceScreenBeforeEmptyScreen(long screenId) {
@@ -1409,11 +1431,11 @@ public class Workspace extends SmoothPagedView
if (hasCustomContent()) {
int index = mScreenOrder.indexOf(CUSTOM_CONTENT_SCREEN_ID);
- int scrollDelta = getScrollForPage(index + 1) - getScrollX() +
- getLayoutTransitionOffsetForPage(index + 1);
- translationX = scrollDelta;
- progress = (1.0f * scrollDelta) /
- (getScrollForPage(index + 1) - getScrollForPage(index));
+ int scrollDelta = getScrollX() - getScrollForPage(index) -
+ getLayoutTransitionOffsetForPage(index);
+ float scrollRange = getScrollForPage(index + 1) - getScrollForPage(index);
+ translationX = scrollRange - scrollDelta;
+ progress = (scrollRange - scrollDelta) / scrollRange;
if (isLayoutRtl()) {
translationX = Math.min(0, translationX);
@@ -1821,7 +1843,7 @@ public class Workspace extends SmoothPagedView
super.onStartReordering();
showOutlines();
// Reordering handles its own animations, disable the automatic ones.
- setLayoutTransition(null);
+ disableLayoutTransitions();
}
protected void onEndReordering() {
@@ -1838,7 +1860,7 @@ public class Workspace extends SmoothPagedView
mLauncher.getModel().updateWorkspaceScreenOrder(mLauncher, mScreenOrder);
// Re-enable auto layout transitions for page deletion.
- setLayoutTransition(mLayoutTransition);
+ enableLayoutTransitions();
}
public boolean isInOverviewMode() {
@@ -2067,9 +2089,9 @@ public class Workspace extends SmoothPagedView
ObjectAnimator overviewPanelAlpha = ObjectAnimator.ofFloat(overviewPanel,
"alpha", finalOverviewPanelAlpha);
- overviewPanelAlpha.addUpdateListener(new AlphaUpdateListener(overviewPanel));
- hotseatAlpha.addUpdateListener(new AlphaUpdateListener(hotseat));
- searchBarAlpha.addUpdateListener(new AlphaUpdateListener(searchBar));
+ overviewPanelAlpha.addListener(new AlphaUpdateListener(overviewPanel));
+ hotseatAlpha.addListener(new AlphaUpdateListener(hotseat));
+ searchBarAlpha.addListener(new AlphaUpdateListener(searchBar));
if (workspaceToOverview) {
hotseatAlpha.setInterpolator(new DecelerateInterpolator(2));
@@ -2078,7 +2100,7 @@ public class Workspace extends SmoothPagedView
}
if (getPageIndicator() != null) {
- pageIndicatorAlpha.addUpdateListener(new AlphaUpdateListener(getPageIndicator()));
+ pageIndicatorAlpha.addListener(new AlphaUpdateListener(getPageIndicator()));
}
anim.play(overviewPanelAlpha);
@@ -2120,7 +2142,7 @@ public class Workspace extends SmoothPagedView
return anim;
}
- static class AlphaUpdateListener implements AnimatorUpdateListener {
+ static class AlphaUpdateListener implements AnimatorUpdateListener, AnimatorListener {
View view;
public AlphaUpdateListener(View v) {
view = v;
@@ -2142,6 +2164,25 @@ public class Workspace extends SmoothPagedView
view.setVisibility(VISIBLE);
}
}
+
+ @Override
+ public void onAnimationCancel(Animator arg0) {
+ }
+
+ @Override
+ public void onAnimationEnd(Animator arg0) {
+ updateVisibility(view);
+ }
+
+ @Override
+ public void onAnimationRepeat(Animator arg0) {
+ }
+
+ @Override
+ public void onAnimationStart(Animator arg0) {
+ // We want the views to be visible for animation, so fade-in/out is visible
+ view.setVisibility(VISIBLE);
+ }
}
@Override