From ebea84d1c95f4c38ba8cee46cd586fd757b4fce2 Mon Sep 17 00:00:00 2001 From: Adam Cohen Date: Wed, 9 Nov 2011 17:20:41 -0800 Subject: [PATCH] Unifying overscroll btw phone and tablet -> Using separate assets for removing and uninstalling Change-Id: I183967c3ca482531ae28f71cd9053b673c6a8d03 --- .../ic_home_all_apps_holo_dark.png | Bin 4135 -> 1385 bytes .../ic_launcher_clear_active_holo.png | Bin 0 -> 1181 bytes .../ic_launcher_clear_normal_holo.png | Bin 0 -> 1003 bytes .../ic_home_all_apps_holo_dark.png | Bin 1647 -> 877 bytes .../ic_launcher_clear_active_holo.png | Bin 0 -> 949 bytes .../ic_launcher_clear_normal_holo.png | Bin 0 -> 802 bytes .../ic_home_all_apps_holo_dark.png | Bin 5890 -> 1658 bytes .../ic_launcher_clear_active_holo.png | Bin 0 -> 1595 bytes .../ic_launcher_clear_normal_holo.png | Bin 0 -> 1392 bytes res/drawable/remove_target_selector.xml | 24 ++++++++++++ ...ctor.xml => uninstall_target_selector.xml} | 0 res/layout-land/launcher.xml | 11 +++--- res/layout-port/launcher.xml | 8 ++-- res/layout/qsb_bar.xml | 2 +- .../launcher2/AppsCustomizePagedView.java | 4 +- src/com/android/launcher2/CellLayout.java | 19 +++++++++- .../android/launcher2/DeleteDropTarget.java | 34 +++++++++++++---- src/com/android/launcher2/DragLayer.java | 10 ++--- src/com/android/launcher2/Launcher.java | 3 ++ src/com/android/launcher2/PagedView.java | 22 ++++++++--- src/com/android/launcher2/Workspace.java | 35 ++++++++++-------- 21 files changed, 124 insertions(+), 48 deletions(-) create mode 100644 res/drawable-hdpi/ic_launcher_clear_active_holo.png create mode 100644 res/drawable-hdpi/ic_launcher_clear_normal_holo.png create mode 100644 res/drawable-mdpi/ic_launcher_clear_active_holo.png create mode 100644 res/drawable-mdpi/ic_launcher_clear_normal_holo.png create mode 100644 res/drawable-xhdpi/ic_launcher_clear_active_holo.png create mode 100644 res/drawable-xhdpi/ic_launcher_clear_normal_holo.png create mode 100644 res/drawable/remove_target_selector.xml rename res/drawable/{delete_target_selector.xml => uninstall_target_selector.xml} (100%) diff --git a/res/drawable-hdpi/ic_home_all_apps_holo_dark.png b/res/drawable-hdpi/ic_home_all_apps_holo_dark.png index a0bfc0f902a0580c469cd155a1e2253843240b45..18a524b1ca0f7188845c61377b286be255f499a3 100644 GIT binary patch delta 1355 zcmV-R1+@C7An6K!iBL{Q4GJ0x0000DNk~Le0000m0000m2m}BC0R0Ow3;+NC0%A)? zL;(MXkIcUS000SaNLh0L002k;002k;M#*bF000DrNkly^EyB5ypSj-Ea52 zvwOR`S?hFQaAtEx$7P!c1cxGn6J@fU3*^7Xi34HB4vaB>7$**#2n0690)aj_kU}F) z=i?Ub?(DqN{dRRZn2+5ZPKUspqJ3tPp6aJ-y1MGA68>KZ2FP}8+uv?*gBz?NFI?Mq zvb@l?HF;5g+xNb>CLk8f>(|;;3{0HA>(y5=0cWu-^+dfY9`!RnS+PW#x2`>@RmIG% zI}kjPNFow{5R{QZAya`sA`U;=F6?c$$uX`NtVahmHzeD4)4r+O(wp^<>c(+uNJ4i zX}cbK|L``mkABlEpXVVDc`=rY$H&JU-R8sXqlSVy+jYRca&c%N zUOb2)Ass9zu>s{^5fb7&0?uGsS@bGxQW^Sx3NDBjFvR)&1-Wax4%$hkd-Op!Icv2u z@j6j|a`Kd%E09l~e)fBvExmd%Uk<|;A2Oa6Yx4|WeBj)vYG>kGs`32U*OXj$rNR-I z;t1>!aa0Bt2m=L(^cYim0*#S5mBs?aGsP3wqr*{Ia)Gd1E5KE$n7E~XJ>5y?zB&_s z-%?BUA43_vg8JCK(dUqzIw9ySeU?ATy$)^Smj1zH7SFx>mmY;by?yV0t*dGJ>-YcppI7VCRf%pLxLLyg^x^$qS(TOK z$vDjZ%t;!7G<)^_yIqg1)KtQ_3m8Wx94vAfjT;kAYmha6$FiV z1n?ROTd4pv(p873BWk=V6@(h`?YU|ywliaxTj@4pJLzn)l4Sc9*5%4wo=)}3m4<`4 zN)r>Kxyoh3G4M+D4g8vQ*>J@CxRUbgH?Y*mlggEb<0LH^y#Zrdy32+G#F1re(mEx_ z@oK|?E$h02ex$}zV;l&8xuElZbV?2i9nRhLr#S literal 4135 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 Hi;({UmVCOs diff --git a/res/drawable-hdpi/ic_launcher_clear_active_holo.png b/res/drawable-hdpi/ic_launcher_clear_active_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..cdd0052b31fea7837e58fe26d2251fc78f0f6e6f GIT binary patch literal 1181 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBgK_V2ls&32_B-|8L#8!rc7-|Nm#B zqyN{`9Ey%^*VSEOW>#%%{QvOb|6X45tgIr;%>OrS5@2Hbzhj32D{G^e*na~9B{sI> z%E~8|mBm?D{->t?ud4cAUvDTNFyGYFKtN!dt81}<0MPs``uacwvS`VYX=Y|X>wxT9 zDXIH1GMfzy{?DF0)y#~Wkr61^D=d6RTKfN-IY1k^z#=^&B2^+H;>;jtX9@_2F*9cf z2>hQrw@O?4|K!O)!R7k;cV%Q^d3mK-SlWezZb?ZkwzK$iiiMZC7GFl#-{W0&oDLpKYe8R zm@`b$u}soHC5+-L|1!y({KLqkzyB{IAJeAC8~pIsI%aw{o{bQM-yxpH9Z})Wc43`&?dX zo!)ZqfT@SUitI6~O^Q(uyI@_ib58t?HA|SMA4_AK%n=J$>o2o@4x3Q!mU=P@BIz zVV3>8ww2F4lbEW0#{XoR;M28wY4mSLV05dNxJHzuB$lLFB^RXvDF!10LqlBPa29!f2Sr0}eoAIqCAtPPD^mlA2B&KkQ-B&IK{f>ErbP0l+XkKBp$iD literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/ic_launcher_clear_normal_holo.png b/res/drawable-hdpi/ic_launcher_clear_normal_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..84549ff946a7d4b467343faf19281f09d030a988 GIT binary patch literal 1003 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}trX+877l!}s{b%+Ad7K3vk;OpT z1B~5HX4^3^FmrgiIEF+Veml+DTRBjo?Y^;i@yr>?GWr6h36mQ%0v9i6)i8|EFiTRL z;q+#D>tDkp<&Hl#K47I+sMqo|$B499I}UJMUUv7gf{uZ2Oj=8%_78uCsw07tIX--y37=heKW7vZ zI-as2aHsnjyWA*KA(>j<lBdad$5_KtJV)yk)F6z=R3O+7K*yn!cSwM|M$9rjQu8$vU zc{J>1Ge3)d!sK!;)V?j*P)Rp*#fihqJCY1}R@a?V+@-T8^~TNJNJ=-q_PKU_-o>9>QM)Uavs{bksxx?gCGC<+ z_ww%LH}mD)^FPFYbY@++p}a$5QFZ$-$xtIZvBMqePdF2gXs~%7b-&WE`C8;^wl7An z){C%J?4Rx2lp@kRO;nJVow6)NtOKk4UOiAAEE)4(M`_JqL@;D1TB8!2v z2N=7Z%(ern=<;-N4DmSr_KJUoNV>%FkMBR9n?HAMspqAw&y?c2t|~2M_YQvHSo9%a zuh>%7e9=cMD>jJVo~*QG`8N^&rJ^bUmx2{Mw#0hsJnJ`%;CDSbxk7OAq+@sIo;>s0 zPR_`B_O}4e>X!$f8?^Jk|C4a<`**%KB`h~TTCab;-<_e)P&as4;H8voUh&D9d_O-X>faHcu=O(Q<^SB4Fi#P$+gtE_(ce>|jPHM3 zUwm<6t^1XxipXPo5C1z-b~3W^`uraE^KbrUcn5^J*~myV@G8Dz$lCZJ+#_|b$kq*l zf@`@8Up4M>($a5GI?%Wxz-F%F7Lgl5+7fTyMU?xN^CzkHvK(Q!QoJd`Lwo6w**VvE zJYQ_{6#L3#D?p%n9HE{%TwBNQbk=3nk zSm@>9BkJBgh3}@es-kOm!}f|Czu%_$zBc!+?7qosy@*hLUme7UQG*s{TKakGq<@c(b?R9mUYZmuZ7st6) zH$HIQa#FpT_x_e*qIZXxZ@I6vibs{L!Gc8%TnRE-O9MKV?^sk5weBU`m8oT-0{jUX zlS>ZV*ZbO%a$tGv#?)xxOR;+!?29KodwOu^+SAp$JEQ$3&eOSf2OC7#SEE>Vl9# zh@q*KsezTDxvqhQm4U(Lrw-FmH00)|WTsW()^KRY4{e|ZNstY}`DrEPiAAXljw$&` gsS2LCiRr09sfj6-g(p*OfQlGAUHx3vIVCg!04D>3lK=n! literal 1647 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 Jvd$@?2>=fjQ;+}v literal 0 HcmV?d00001 diff --git a/res/drawable-xhdpi/ic_home_all_apps_holo_dark.png b/res/drawable-xhdpi/ic_home_all_apps_holo_dark.png index 21a51ab6ae8811162eb2665b1d9a7c2c9d0326e8..dff3e16455d94afca57e776438e08c3e7c8f13f2 100644 GIT binary patch delta 1602 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 bM{Sb?N}^)Z5*sC}0SOYX4e-3`{)6-%xq>!? literal 0 HcmV?d00001 diff --git a/res/drawable-xhdpi/ic_launcher_clear_normal_holo.png b/res/drawable-xhdpi/ic_launcher_clear_normal_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..d4965d9f804e230e6f11acaaf2f26324bc083cfc GIT binary patch literal 1392 zcmV-$1&{iPP)MN z(xinVZE2AU6dRsg! zd)SlfxG8k~C!|jk{?sa_zUzdj9se_q?muC^$7l8to7B~ZkvM++r%d?qh^#V^ zS(v|s#6V~L6dd}2P9)|pnFVM1{Sp#dN4M}~KoxOK^gNj`^F(%qs8pCsBT+AfPxOho zbgAG>n)xRaq9?AY-VA_C?ZG65ZcP~mkyRx!3v=n(DXi1arOkpfWf-@nFceHm?eO** zG6n^a@O~V*cDJ}{p>_)Yrnjm@MdR9C90~771d7LZ01N_cVox-M(aD+mDQr$ZIfKz? zO6)-!gvYO7%>rVf6hK|0XHut0@%qqV8Pj4L*Bs zM}&=Pr5YAL{#nU?nUZ88S(YUt&P%25zQ6M#vYhiw@9~TRk!9E+bt&_q`1NP1L^g== zygB~E>`$SUmA@#5kKV%fc197iQGw~xQRHP1h!`;th?i0H=`c}YO@Hza{~QF=H*$O!I{gmy6LtxHIv?$xQ}Dnm^OxE6ZhS`}~5hb8lO~+qoMPfdG2my>k9w7mcekuG-Fq6t2z`4QKk@EA#{c zF>lR-iFm-DJaPQ(8zMu$K8+EVO?N$ok?YfjPW1N8iR1ocJixXvu$3=X;HvVA`SY(| z#h*R9xv;yi?7nQ-R5hx*#p3UgOhkNhXYn`HTsBbMd~z!u#wFXY1k3I4qoS4coKeSaefwW^{L9a%BKPWN%_+AW3auXJt}lVPtu6$z?nM0000 + + + + + + diff --git a/res/drawable/delete_target_selector.xml b/res/drawable/uninstall_target_selector.xml similarity index 100% rename from res/drawable/delete_target_selector.xml rename to res/drawable/uninstall_target_selector.xml diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml index 084b1636a5..a74eb14c8c 100644 --- a/res/layout-land/launcher.xml +++ b/res/layout-land/launcher.xml @@ -66,6 +66,11 @@ + @@ -76,12 +81,6 @@ android:layout_height="match_parent" android:visibility="invisible" /> - - - - + + + android:drawableLeft="@drawable/remove_target_selector" /> 0) { // Overscroll to the right v.setPivotX((1 - TRANSITION_PIVOT) * pageWidth); @@ -1273,7 +1273,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen scale = 1.0f; alpha = 1.0f; // On the last page, we don't want the page to have any lateral motion. - translationX = getScrollX() - mMaxScrollX; + translationX = 0; } else { v.setPivotY(pageHeight / 2.0f); v.setPivotX(pageWidth / 2.0f); diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java index 2d75493868..6e60280775 100644 --- a/src/com/android/launcher2/CellLayout.java +++ b/src/com/android/launcher2/CellLayout.java @@ -36,7 +36,6 @@ import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; -import android.graphics.Region; import android.graphics.drawable.Drawable; import android.graphics.drawable.NinePatchDrawable; import android.util.AttributeSet; @@ -72,6 +71,7 @@ public class CellLayout extends ViewGroup { private int mWidthGap; private int mHeightGap; private int mMaxGap; + private boolean mScrollingTransformsDirty = false; private final Rect mRect = new Rect(); private final CellInfo mCellInfo = new CellInfo(); @@ -345,6 +345,23 @@ public class CellLayout extends ViewGroup { return mIsDragOverlapping; } + protected void setOverscrollTransformsDirty(boolean dirty) { + mScrollingTransformsDirty = dirty; + } + + protected void resetOverscrollTransforms() { + if (mScrollingTransformsDirty) { + setOverscrollTransformsDirty(false); + setTranslationX(0); + setRotationY(0); + // It doesn't matter if we pass true or false here, the important thing is that we + // pass 0, which results in the overscroll drawable not being drawn any more. + setOverScrollAmount(0, false); + setPivotX(getMeasuredWidth() / 2); + setPivotY(getMeasuredHeight() / 2); + } + } + @Override protected void onDraw(Canvas canvas) { // When we're large, we are either drawn in a "hover" state (ie when dragging an item to diff --git a/src/com/android/launcher2/DeleteDropTarget.java b/src/com/android/launcher2/DeleteDropTarget.java index 1553d3cc69..4e93b22b13 100644 --- a/src/com/android/launcher2/DeleteDropTarget.java +++ b/src/com/android/launcher2/DeleteDropTarget.java @@ -23,6 +23,7 @@ import android.content.res.Resources; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.Rect; +import android.graphics.drawable.Drawable; import android.graphics.drawable.TransitionDrawable; import android.util.AttributeSet; import android.view.View; @@ -35,8 +36,10 @@ public class DeleteDropTarget extends ButtonDropTarget { private static int DELETE_ANIMATION_DURATION = 250; private ColorStateList mOriginalTextColor; - private TransitionDrawable mDrawable; private int mHoverColor = 0xFFFF0000; + private TransitionDrawable mUninstallDrawable; + private TransitionDrawable mRemoveDrawable; + private TransitionDrawable mCurrentDrawable; public DeleteDropTarget(Context context, AttributeSet attrs) { this(context, attrs, 0); @@ -58,8 +61,16 @@ public class DeleteDropTarget extends ButtonDropTarget { mHoverColor = r.getColor(R.color.delete_target_hover_tint); mHoverPaint.setColorFilter(new PorterDuffColorFilter( mHoverColor, PorterDuff.Mode.SRC_ATOP)); - mDrawable = (TransitionDrawable) getCompoundDrawables()[0]; - mDrawable.setCrossFadeEnabled(true); + mUninstallDrawable = (TransitionDrawable) + r.getDrawable(R.drawable.uninstall_target_selector); + mRemoveDrawable = (TransitionDrawable) r.getDrawable(R.drawable.remove_target_selector); + + mRemoveDrawable.setCrossFadeEnabled(true); + mUninstallDrawable.setCrossFadeEnabled(true); + + // The current drawable is set to either the remove drawable or the uninstall drawable + // and is initially set to the remove drawable, as set in the layout xml. + mCurrentDrawable = (TransitionDrawable) getCompoundDrawables()[0]; // Remove the text in the Phone UI in landscape int orientation = getResources().getConfiguration().orientation; @@ -116,8 +127,15 @@ public class DeleteDropTarget extends ButtonDropTarget { } } + if (isUninstall) { + setCompoundDrawablesWithIntrinsicBounds(mUninstallDrawable, null, null, null); + } else { + setCompoundDrawablesWithIntrinsicBounds(mRemoveDrawable, null, null, null); + } + mCurrentDrawable = (TransitionDrawable) getCompoundDrawables()[0]; + mActive = isVisible; - mDrawable.resetTransition(); + mCurrentDrawable.resetTransition(); setTextColor(mOriginalTextColor); ((ViewGroup) getParent()).setVisibility(isVisible ? View.VISIBLE : View.GONE); if (getText().length() > 0) { @@ -135,7 +153,7 @@ public class DeleteDropTarget extends ButtonDropTarget { public void onDragEnter(DragObject d) { super.onDragEnter(d); - mDrawable.startTransition(mTransitionDuration); + mCurrentDrawable.startTransition(mTransitionDuration); setTextColor(mHoverColor); } @@ -143,7 +161,7 @@ public class DeleteDropTarget extends ButtonDropTarget { super.onDragExit(d); if (!d.dragComplete) { - mDrawable.resetTransition(); + mCurrentDrawable.resetTransition(); setTextColor(mOriginalTextColor); } } @@ -155,8 +173,8 @@ public class DeleteDropTarget extends ButtonDropTarget { dragLayer.getViewRectRelativeToSelf(d.dragView, from); dragLayer.getViewRectRelativeToSelf(this, to); - int width = mDrawable.getIntrinsicWidth(); - int height = mDrawable.getIntrinsicHeight(); + int width = mCurrentDrawable.getIntrinsicWidth(); + int height = mCurrentDrawable.getIntrinsicHeight(); to.set(to.left + getPaddingLeft(), to.top + getPaddingTop(), to.left + getPaddingLeft() + width, to.bottom); diff --git a/src/com/android/launcher2/DragLayer.java b/src/com/android/launcher2/DragLayer.java index 433db50543..3c626d46d9 100644 --- a/src/com/android/launcher2/DragLayer.java +++ b/src/com/android/launcher2/DragLayer.java @@ -70,7 +70,7 @@ public class DragLayer extends FrameLayout { private boolean mHoverPointClosesFolder = false; private Rect mHitRect = new Rect(); private int mWorkspaceIndex = -1; - private int mHotseatIndex = -1; + private int mQsbIndex = -1; /** * Used to create a new DragLayer from XML. @@ -627,13 +627,13 @@ public class DragLayer extends FrameLayout { private void updateChildIndices() { if (mLauncher != null) { mWorkspaceIndex = indexOfChild(mLauncher.getWorkspace()); - mHotseatIndex = indexOfChild(mLauncher.getHotseat()); + mQsbIndex = indexOfChild(mLauncher.getSearchBar()); } } @Override protected int getChildDrawingOrder(int childCount, int i) { - if (mWorkspaceIndex == -1 || mHotseatIndex == -1 || + if (mWorkspaceIndex == -1 || mQsbIndex == -1 || mLauncher.getWorkspace().isDrawingBackgroundGradient()) { return i; } @@ -641,10 +641,10 @@ public class DragLayer extends FrameLayout { // 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) { + if (i == mQsbIndex) { return mWorkspaceIndex; } else if (i == mWorkspaceIndex) { - return mHotseatIndex; + return mQsbIndex; } else { return i; } diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index 664b597ba6..f91a471989 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -1956,6 +1956,9 @@ public final class Launcher extends Activity Hotseat getHotseat() { return mHotseat; } + SearchDropTargetBar getSearchBar() { + return mSearchDropTargetBar; + } /** * Returns the CellLayout of the specified container at the specified screen. diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java index ad88a89d72..14ef53fbb1 100644 --- a/src/com/android/launcher2/PagedView.java +++ b/src/com/android/launcher2/PagedView.java @@ -129,6 +129,11 @@ public abstract class PagedView extends ViewGroup { protected int mUnboundedScrollX; protected int[] mTempVisiblePagesRange = new int[2]; + // mOverScrollX is equal to mScrollX when we're within the normal scroll range. Otherwise + // it is equal to the scaled overscroll position. We use a separate value so as to prevent + // the screens from continuing to translate beyond the normal bounds. + protected int mOverScrollX; + // parameter that adjusts the layout to be optimized for pages with that scale factor protected float mLayoutScale = 1.0f; @@ -377,6 +382,7 @@ public abstract class PagedView extends ViewGroup { overScroll(x - mMaxScrollX); } } else { + mOverScrollX = x; super.scrollTo(x, y); } @@ -730,7 +736,9 @@ public abstract class PagedView extends ViewGroup { @Override protected void dispatchDraw(Canvas canvas) { int halfScreenSize = getMeasuredWidth() / 2; - int screenCenter = mScrollX + halfScreenSize; + // mOverScrollX is equal to mScrollX when we're within the normal scroll range. Otherwise + // it is equal to the scaled overscroll position. + int screenCenter = mOverScrollX + halfScreenSize; if (screenCenter != mLastScreenCenter || mForceScreenScrolled) { screenScrolled(screenCenter); @@ -1077,9 +1085,11 @@ public abstract class PagedView extends ViewGroup { int overScrollAmount = (int) Math.round(f * screenSize); if (amount < 0) { - mScrollX = overScrollAmount; + mOverScrollX = overScrollAmount; + mScrollX = 0; } else { - mScrollX = mMaxScrollX + overScrollAmount; + mOverScrollX = mMaxScrollX + overScrollAmount; + mScrollX = mMaxScrollX; } invalidate(); } @@ -1099,9 +1109,11 @@ public abstract class PagedView extends ViewGroup { int overScrollAmount = (int) Math.round(OVERSCROLL_DAMP_FACTOR * f * screenSize); if (amount < 0) { - mScrollX = overScrollAmount; + mOverScrollX = overScrollAmount; + mScrollX = 0; } else { - mScrollX = mMaxScrollX + overScrollAmount; + mOverScrollX = mMaxScrollX + overScrollAmount; + mScrollX = mMaxScrollX; } invalidate(); } diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index b6b90f4723..4ad441d5be 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -1101,6 +1101,7 @@ public class Workspace extends SmoothPagedView } private void screenScrolledLargeUI(int screenCenter) { + boolean isInOverscroll = false; for (int i = 0; i < getChildCount(); i++) { CellLayout cl = (CellLayout) getChildAt(i); if (cl != null) { @@ -1111,11 +1112,17 @@ public class Workspace extends SmoothPagedView // If the current page (i) is being over scrolled, we use a different // set of rules for setting the background alpha multiplier. if (!isSmall()) { - if ((mScrollX < 0 && i == 0) || (mScrollX > mMaxScrollX && - i == getChildCount() -1 )) { + if ((mOverScrollX < 0 && i == 0) || (mOverScrollX > mMaxScrollX && + i == getChildCount() -1)) { + isInOverscroll = true; + rotation *= -1; cl.setBackgroundAlphaMultiplier( overScrollBackgroundAlphaInterpolator(Math.abs(scrollProgress))); mOverScrollPageIndex = i; + cl.setOverScrollAmount(Math.abs(scrollProgress), i == 0); + cl.setPivotX(cl.getMeasuredWidth() * (i == 0 ? 0.75f : 0.25f)); + cl.setPivotY(cl.getMeasuredHeight() * 0.5f); + cl.setOverscrollTransformsDirty(true); } else if (mOverScrollPageIndex != i) { cl.setBackgroundAlphaMultiplier( backgroundAlphaInterpolator(Math.abs(scrollProgress))); @@ -1130,29 +1137,25 @@ public class Workspace extends SmoothPagedView cl.fastInvalidate(); } } + if (!isSwitchingState() && !isInOverscroll) { + ((CellLayout) getChildAt(0)).resetOverscrollTransforms(); + ((CellLayout) getChildAt(getChildCount() - 1)).resetOverscrollTransforms(); + } invalidate(); } - private void resetCellLayoutTransforms(CellLayout cl, boolean left) { - cl.setTranslationX(0); - cl.setRotationY(0); - cl.setOverScrollAmount(0, left); - cl.setPivotX(cl.getMeasuredWidth() / 2); - cl.setPivotY(cl.getMeasuredHeight() / 2); - } - private void screenScrolledStandardUI(int screenCenter) { - if (mScrollX < 0 || mScrollX > mMaxScrollX) { - int index = mScrollX < 0 ? 0 : getChildCount() - 1; + if (mOverScrollX < 0 || mOverScrollX > mMaxScrollX) { + int index = mOverScrollX < 0 ? 0 : getChildCount() - 1; CellLayout cl = (CellLayout) getChildAt(index); float scrollProgress = getScrollProgress(screenCenter, cl, index); cl.setOverScrollAmount(Math.abs(scrollProgress), index == 0); - float translationX = index == 0 ? mScrollX : - (mMaxScrollX - mScrollX); float rotation = - WORKSPACE_OVERSCROLL_ROTATION * scrollProgress; cl.setCameraDistance(mDensity * CAMERA_DISTANCE); cl.setPivotX(cl.getMeasuredWidth() * (index == 0 ? 0.75f : 0.25f)); - cl.setTranslationX(translationX); + cl.setPivotY(cl.getMeasuredHeight() * 0.5f); cl.setRotationY(rotation); + cl.setOverscrollTransformsDirty(true); setFadeForOverScroll(Math.abs(scrollProgress)); } else { if (mOverscrollFade != 0) { @@ -1160,8 +1163,8 @@ public class Workspace extends SmoothPagedView } // We don't want to mess with the translations during transitions if (!isSwitchingState()) { - resetCellLayoutTransforms((CellLayout) getChildAt(0), true); - resetCellLayoutTransforms((CellLayout) getChildAt(getChildCount() - 1), false); + ((CellLayout) getChildAt(0)).resetOverscrollTransforms(); + ((CellLayout) getChildAt(getChildCount() - 1)).resetOverscrollTransforms(); } } }