diff options
author | Adam Cohen <adamcohen@google.com> | 2011-11-04 13:59:53 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-11-04 13:59:53 -0700 |
commit | acec6719208a59ccf32bfd4f46e383c9400945d9 (patch) | |
tree | 0d71ef92732c8befa4b7ad7cfba210396da61527 | |
parent | 14cee9a9bb10807362595f1d1e486716f997fc00 (diff) | |
parent | 21b411074e39fd10cbc8dd0220bb159da4af2c76 (diff) | |
download | android_packages_apps_Trebuchet-acec6719208a59ccf32bfd4f46e383c9400945d9.tar.gz android_packages_apps_Trebuchet-acec6719208a59ccf32bfd4f46e383c9400945d9.tar.bz2 android_packages_apps_Trebuchet-acec6719208a59ccf32bfd4f46e383c9400945d9.zip |
Merge "Cleaning up overscroll effect in launcher workspace" into ics-mr1
-rw-r--r-- | res/layout-port/launcher.xml | 12 | ||||
-rw-r--r-- | src/com/android/launcher2/DragLayer.java | 41 | ||||
-rw-r--r-- | src/com/android/launcher2/PagedView.java | 16 | ||||
-rw-r--r-- | src/com/android/launcher2/Workspace.java | 23 |
4 files changed, 79 insertions, 13 deletions
diff --git a/res/layout-port/launcher.xml b/res/layout-port/launcher.xml index e9ee5f82d..b8df2ee57 100644 --- a/res/layout-port/launcher.xml +++ b/res/layout-port/launcher.xml @@ -64,18 +64,18 @@ android:id="@+id/qsb_bar" layout="@layout/qsb_bar" /> - <include layout="@layout/apps_customize_pane" - android:id="@+id/apps_customize_pane" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:visibility="invisible" /> - <include layout="@layout/hotseat" android:id="@+id/hotseat" android:layout_width="match_parent" android:layout_height="@dimen/button_bar_height_plus_padding" android:layout_gravity="bottom" /> + <include layout="@layout/apps_customize_pane" + android:id="@+id/apps_customize_pane" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:visibility="invisible" /> + <include layout="@layout/workspace_cling" android:id="@+id/workspace_cling" android:layout_width="match_parent" diff --git a/src/com/android/launcher2/DragLayer.java b/src/com/android/launcher2/DragLayer.java index aa49ca1ce..433db5054 100644 --- a/src/com/android/launcher2/DragLayer.java +++ b/src/com/android/launcher2/DragLayer.java @@ -69,6 +69,8 @@ public class DragLayer extends FrameLayout { private float mDropViewAlpha; private boolean mHoverPointClosesFolder = false; private Rect mHitRect = new Rect(); + private int mWorkspaceIndex = -1; + private int mHotseatIndex = -1; /** * Used to create a new DragLayer from XML. @@ -81,6 +83,7 @@ public class DragLayer extends FrameLayout { // Disable multitouch across the workspace/all apps/customize tray setMotionEventSplittingEnabled(false); + setChildrenDrawingOrderEnabled(true); } public void setup(Launcher launcher, DragController controller) { @@ -610,6 +613,44 @@ public class DragLayer extends FrameLayout { } @Override + protected void onViewAdded(View child) { + super.onViewAdded(child); + updateChildIndices(); + } + + @Override + protected void onViewRemoved(View child) { + super.onViewRemoved(child); + updateChildIndices(); + } + + private void updateChildIndices() { + if (mLauncher != null) { + mWorkspaceIndex = indexOfChild(mLauncher.getWorkspace()); + mHotseatIndex = indexOfChild(mLauncher.getHotseat()); + } + } + + @Override + protected int getChildDrawingOrder(int childCount, int i) { + if (mWorkspaceIndex == -1 || mHotseatIndex == -1 || + mLauncher.getWorkspace().isDrawingBackgroundGradient()) { + return i; + } + + // This ensures that the workspace is drawn above the hotseat and qsb, + // except when the workspace is drawing a background gradient, in which + // case we want the workspace to stay behind these elements. + if (i == mHotseatIndex) { + return mWorkspaceIndex; + } else if (i == mWorkspaceIndex) { + return mHotseatIndex; + } else { + return i; + } + } + + @Override protected void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); if (mDropView != null) { diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java index de45bf50f..2de7d4a4b 100644 --- a/src/com/android/launcher2/PagedView.java +++ b/src/com/android/launcher2/PagedView.java @@ -1711,7 +1711,7 @@ public abstract class PagedView extends ViewGroup { } } - private ImageView getScrollingIndicator() { + protected ImageView getScrollingIndicator() { // We use mHasScrollIndicator to prevent future lookups if there is no sibling indicator // found if (mHasScrollIndicator && mScrollIndicator == null) { @@ -1750,9 +1750,7 @@ public abstract class PagedView extends ViewGroup { // Fade the indicator in updateScrollingIndicatorPosition(); mScrollIndicator.setVisibility(View.VISIBLE); - if (mScrollIndicatorAnimator != null) { - mScrollIndicatorAnimator.cancel(); - } + cancelScrollingIndicatorAnimations(); if (immediately) { mScrollIndicator.setAlpha(1f); } else { @@ -1763,6 +1761,12 @@ public abstract class PagedView extends ViewGroup { } } + protected void cancelScrollingIndicatorAnimations() { + if (mScrollIndicatorAnimator != null) { + mScrollIndicatorAnimator.cancel(); + } + } + protected void hideScrollingIndicator(boolean immediately) { if (getChildCount() <= 1) return; if (!isScrollingIndicatorEnabled()) return; @@ -1771,9 +1775,7 @@ public abstract class PagedView extends ViewGroup { if (mScrollIndicator != null) { // Fade the indicator out updateScrollingIndicatorPosition(); - if (mScrollIndicatorAnimator != null) { - mScrollIndicatorAnimator.cancel(); - } + cancelScrollingIndicatorAnimations(); if (immediately) { mScrollIndicator.setVisibility(View.GONE); mScrollIndicator.setAlpha(0f); diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index a6ba98eb5..d3a31c49b 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -175,6 +175,7 @@ public class Workspace extends SmoothPagedView private final Rect mTempRect = new Rect(); private final int[] mTempXY = new int[2]; private int mDragViewMultiplyColor; + private float mOverscrollFade = 0; // Paint used to draw external drop outline private final Paint mExternalDragOutlinePaint = new Paint(); @@ -1152,7 +1153,11 @@ public class Workspace extends SmoothPagedView cl.setPivotX(cl.getMeasuredWidth() * (index == 0 ? 0.75f : 0.25f)); cl.setTranslationX(translationX); cl.setRotationY(rotation); + setFadeForOverScroll(Math.abs(scrollProgress)); } else { + if (mOverscrollFade != 0) { + setFadeForOverScroll(0); + } // We don't want to mess with the translations during transitions if (!isSwitchingState()) { resetCellLayoutTransforms((CellLayout) getChildAt(0), true); @@ -1230,6 +1235,10 @@ public class Workspace extends SmoothPagedView super.onDraw(canvas); } + boolean isDrawingBackgroundGradient() { + return (mBackground != null && mBackgroundAlpha > 0.0f && mDrawBackground); + } + @Override protected void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); @@ -3454,6 +3463,20 @@ public class Workspace extends SmoothPagedView } } + void setFadeForOverScroll(float fade) { + if (!isScrollingIndicatorEnabled()) return; + + mOverscrollFade = fade; + float reducedFade = 0.5f + 0.5f * (1 - fade); + final ViewGroup parent = (ViewGroup) getParent(); + final ImageView dockDivider = (ImageView) (parent.findViewById(R.id.dock_divider)); + final ImageView scrollIndicator = getScrollingIndicator(); + + cancelScrollingIndicatorAnimations(); + dockDivider.setAlpha(reducedFade); + scrollIndicator.setAlpha(1 - fade); + } + void hideDockDivider(boolean immediately) { final ViewGroup parent = (ViewGroup) getParent(); final View qsbDivider = (ImageView) (parent.findViewById(R.id.qsb_divider)); |