From f6b64bc01cb269c351236d6b60cde86020eb79dd Mon Sep 17 00:00:00 2001 From: seven332 Date: Tue, 11 Nov 2014 15:31:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20SlidingDrawerLayout=20?= =?UTF-8?q?=E5=BC=80=E5=90=AF=E7=8A=B6=E6=80=81=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ehviewer/widget/SlidingDrawerLayout.java | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/com/hippo/ehviewer/widget/SlidingDrawerLayout.java b/src/com/hippo/ehviewer/widget/SlidingDrawerLayout.java index a7973bea6..cc8d9f8c7 100644 --- a/src/com/hippo/ehviewer/widget/SlidingDrawerLayout.java +++ b/src/com/hippo/ehviewer/widget/SlidingDrawerLayout.java @@ -656,16 +656,21 @@ public class SlidingDrawerLayout extends ViewGroup implements ValueAnimator.Anim else dispatchOnDrawerClosed(mTargetView); - if (mOpenTask == null || mToOpen) - ; - else if (mOpenTask == mLeftDrawer) - startAnimation(true, true); - else if (mOpenTask == mRightDrawer) - startAnimation(true, false); - - } else { - mCancelAnimation = false; + if (mOpenTask != null && !mToOpen && + (mOpenTask == mLeftDrawer || mOpenTask == mRightDrawer)) { + // If call startAnimation directly, + // onAnimationStart and onAnimationEnd will not be called + final boolean isLeft = mOpenTask == mLeftDrawer; + getHandler().post(new Runnable() { + @Override + public void run() { + startAnimation(isLeft, true); + } + }); + } } + + mCancelAnimation = false; mOpenTask = null; } @@ -907,7 +912,7 @@ public class SlidingDrawerLayout extends ViewGroup implements ValueAnimator.Anim // Callback if (update && mListener != null) { - mListener.onDrawerOpened(drawerView); + mListener.onDrawerClosed(drawerView); } }