From 1e62cc1f4e98d0ac3beff4ce4d35b5f839e280b5 Mon Sep 17 00:00:00 2001 From: Antoine POPINEAU Date: Sun, 12 Jul 2020 18:55:52 +0200 Subject: [PATCH] Now Playing view: do not cancel fling event on touch, disable view behind it when opened. --- .../apognu/otter/activities/MainActivity.kt | 12 +++++++++ .../otter/views/InterceptedFrameLayout.kt | 26 +++++++++++++++++++ .../apognu/otter/views/NowPlayingView.kt | 4 +-- app/src/main/res/layout/activity_main.xml | 2 +- 4 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/com/github/apognu/otter/views/InterceptedFrameLayout.kt diff --git a/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt b/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt index 8bb26da..5ce1fe1 100644 --- a/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt +++ b/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt @@ -29,6 +29,7 @@ import com.github.apognu.otter.repositories.FavoritedRepository import com.github.apognu.otter.repositories.FavoritesRepository import com.github.apognu.otter.repositories.Repository import com.github.apognu.otter.utils.* +import com.github.apognu.otter.views.DisableableFrameLayout import com.github.kittinunf.fuel.Fuel import com.github.kittinunf.fuel.coroutines.awaitStringResponse import com.google.android.exoplayer2.Player @@ -77,6 +78,17 @@ class MainActivity : AppCompatActivity() { override fun onResume() { super.onResume() + (container as? DisableableFrameLayout)?.callback = object : DisableableFrameLayout.Callback { + override fun shouldRegisterTouch(): Boolean { + if (now_playing.isOpened()) { + now_playing.close() + return false + } + + return true + } + } + favoritedRepository.update(this, lifecycleScope) startService(Intent(this, PlayerService::class.java)) diff --git a/app/src/main/java/com/github/apognu/otter/views/InterceptedFrameLayout.kt b/app/src/main/java/com/github/apognu/otter/views/InterceptedFrameLayout.kt new file mode 100644 index 0000000..79f9ba8 --- /dev/null +++ b/app/src/main/java/com/github/apognu/otter/views/InterceptedFrameLayout.kt @@ -0,0 +1,26 @@ +package com.github.apognu.otter.views + +import android.content.Context +import android.util.AttributeSet +import android.view.MotionEvent +import android.widget.FrameLayout + +class DisableableFrameLayout : FrameLayout { + interface Callback { + fun shouldRegisterTouch(): Boolean + } + + var callback: Callback? = null + + constructor(context: Context) : super(context) + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + constructor(context: Context, attrs: AttributeSet?, style: Int) : super(context, attrs, style) + + override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean { + callback?.let { + return !it.shouldRegisterTouch() + } + + return false + } +} \ No newline at end of file diff --git a/app/src/main/java/com/github/apognu/otter/views/NowPlayingView.kt b/app/src/main/java/com/github/apognu/otter/views/NowPlayingView.kt index 81bc8aa..3e51700 100644 --- a/app/src/main/java/com/github/apognu/otter/views/NowPlayingView.kt +++ b/app/src/main/java/com/github/apognu/otter/views/NowPlayingView.kt @@ -72,7 +72,7 @@ class NowPlayingView : MaterialCardView { } inner class OnGestureDetection : GestureDetector.SimpleOnGestureListener() { - var maxHeight = 0 + private var maxHeight = 0 private var minHeight = 0 private var maxMargin = 0 @@ -100,8 +100,6 @@ class NowPlayingView : MaterialCardView { initialTouchY = e.rawY lastTouchY = e.rawY - flingAnimator?.cancel() - return true } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 73d4146..f13bc02 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> -