@@ -26,6 +26,8 @@ import android.view.MenuInflater
2626import android.view.MenuItem
2727import android.view.View
2828import android.view.ViewGroup
29+ import android.view.GestureDetector
30+ import android.view.MotionEvent
2931import com.naman14.timberx.R
3032import com.naman14.timberx.databinding.FragmentNowPlayingBinding
3133import com.naman14.timberx.extensions.addFragment
@@ -53,14 +55,19 @@ import kotlinx.android.synthetic.main.fragment_now_playing.songTitle
5355import kotlinx.android.synthetic.main.fragment_now_playing.upNextAlbumArt
5456import kotlinx.android.synthetic.main.fragment_now_playing.upNextArtist
5557import kotlinx.android.synthetic.main.fragment_now_playing.upNextTitle
58+ import kotlinx.android.synthetic.main.fragment_now_playing.frag_now_playing_rl
5659import org.koin.android.ext.android.inject
60+ import kotlin.math.absoluteValue
5761
58- class NowPlayingFragment : BaseNowPlayingFragment () {
62+ class NowPlayingFragment : BaseNowPlayingFragment (), GestureDetector.OnGestureListener {
5963 var binding by AutoClearedValue <FragmentNowPlayingBinding >(this )
6064 private var queueData: QueueData ? = null
6165
6266 private val songsRepository by inject<SongsRepository >()
6367
68+ private lateinit var gestureDetector: GestureDetector
69+ val MIN_FLING_VELOCITY = 800
70+
6471 override fun onCreateView (
6572 inflater : LayoutInflater ,
6673 container : ViewGroup ? ,
@@ -139,6 +146,8 @@ class NowPlayingFragment : BaseNowPlayingFragment() {
139146 btnBack.setOnClickListener { safeActivity.onBackPressed() }
140147
141148 buildUIControls()
149+
150+ setupSwipeGestures()
142151 }
143152
144153 private fun buildUIControls () {
@@ -152,6 +161,11 @@ class NowPlayingFragment : BaseNowPlayingFragment() {
152161 }
153162 }
154163
164+ private fun setupSwipeGestures () {
165+ gestureDetector = GestureDetector (activity, this )
166+ frag_now_playing_rl.setOnTouchListener(touchListener)
167+ }
168+
155169 override fun onCreateOptionsMenu (menu : Menu , inflater : MenuInflater ) {
156170 inflater.inflate(R .menu.menu_main, menu)
157171 super .onCreateOptionsMenu(menu, inflater)
@@ -177,4 +191,42 @@ class NowPlayingFragment : BaseNowPlayingFragment() {
177191 seekBar.disconnectController()
178192 super .onStop()
179193 }
194+
195+ var touchListener: View .OnTouchListener = View .OnTouchListener {
196+ _: View , motionEvent: MotionEvent -> gestureDetector.onTouchEvent(motionEvent)
197+ }
198+
199+ override fun onDown (event : MotionEvent ): Boolean {
200+ return true
201+ }
202+
203+ override fun onFling (
204+ e1 : MotionEvent ,
205+ e2 : MotionEvent ,
206+ velocityX : Float ,
207+ velocityY : Float
208+ ): Boolean {
209+ if (velocityX.absoluteValue > MIN_FLING_VELOCITY ) {
210+ if (velocityX < 0 ) {
211+ mainViewModel.transportControls().skipToNext()
212+ } else {
213+ mainViewModel.transportControls().skipToPrevious()
214+ }
215+ }
216+ return true
217+ }
218+
219+ override fun onShowPress (e : MotionEvent ? ) {
220+ }
221+
222+ override fun onSingleTapUp (e : MotionEvent ? ): Boolean {
223+ return true
224+ }
225+
226+ override fun onLongPress (e : MotionEvent ? ) {
227+ }
228+
229+ override fun onScroll (e1 : MotionEvent ? , e2 : MotionEvent ? , distanceX : Float , distanceY : Float ): Boolean {
230+ return true
231+ }
180232}
0 commit comments