From ffb2c1332a0722436f1f956e8aa0a3da15cb12c2 Mon Sep 17 00:00:00 2001 From: Adrian Ulrich Date: Sat, 16 Apr 2016 11:47:56 +0200 Subject: [PATCH] Hide slide if we are switching to FullPlaybackActivity due to a click --- .../android/vanilla/LibraryActivity.java | 2 ++ .../android/vanilla/SlidingView.java | 28 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/ch/blinkenlights/android/vanilla/LibraryActivity.java b/src/ch/blinkenlights/android/vanilla/LibraryActivity.java index ad3377d4..96ed9edf 100644 --- a/src/ch/blinkenlights/android/vanilla/LibraryActivity.java +++ b/src/ch/blinkenlights/android/vanilla/LibraryActivity.java @@ -425,6 +425,8 @@ public class LibraryActivity */ public void openPlaybackActivity() { + if (mSlidingView.isExpanded()) + mSlidingView.hideSlideDelayed(); startActivity(new Intent(this, FullPlaybackActivity.class)); } diff --git a/src/ch/blinkenlights/android/vanilla/SlidingView.java b/src/ch/blinkenlights/android/vanilla/SlidingView.java index 1d9dd597..02f23910 100644 --- a/src/ch/blinkenlights/android/vanilla/SlidingView.java +++ b/src/ch/blinkenlights/android/vanilla/SlidingView.java @@ -64,6 +64,10 @@ public class SlidingView extends FrameLayout * TRUE if we started to move this view */ private boolean mDidScroll = false; + /** + * TRUE if we have to hide the slide on visibility changes + */ + private boolean mDelayedHide = false; /** * Reference to the gesture detector */ @@ -140,6 +144,14 @@ public class SlidingView extends FrameLayout setExpansionStage(0); } + /** + * Same as hideSlide(), but will fire after we are not + * visible anymore + */ + public void hideSlideDelayed() { + mDelayedHide = true; + } + /** * Returns true if the slide is fully hidden */ @@ -147,6 +159,13 @@ public class SlidingView extends FrameLayout return mCurrentStage == 0; } + /** + * Returns true if the slide is fully expanded + */ + public boolean isExpanded() { + return mCurrentStage == (mStages.size()-1); + } + /** * Transforms to the new expansion state * @@ -154,6 +173,8 @@ public class SlidingView extends FrameLayout */ private void setExpansionStage(int stage) { mCurrentStage = stage; + mDelayedHide = false; + int pxOff = mStages.get(stage); this .animate() @@ -255,6 +276,13 @@ public class SlidingView extends FrameLayout } } + @Override + protected void onWindowVisibilityChanged(int state) { + super.onWindowVisibilityChanged(state); + if (state == View.GONE && mDelayedHide) { + hideSlide(); + } + } @Override public boolean onTouch(View v, MotionEvent event){