diff --git a/app/src/main/java/dev/jdtech/jellyfin/utils/AppPreferences.kt b/app/src/main/java/dev/jdtech/jellyfin/utils/AppPreferences.kt
index 5d51b356..fbe41d71 100644
--- a/app/src/main/java/dev/jdtech/jellyfin/utils/AppPreferences.kt
+++ b/app/src/main/java/dev/jdtech/jellyfin/utils/AppPreferences.kt
@@ -11,6 +11,8 @@ constructor(
private val sharedPreferences: SharedPreferences
) {
val playerGestures = sharedPreferences.getBoolean(Constants.PREF_PLAYER_GESTURES, true)
+ val playerGesturesVB = sharedPreferences.getBoolean(Constants.PREF_PLAYER_GESTURES_VB, true)
+ val playerGesturesZoom = sharedPreferences.getBoolean(Constants.PREF_PLAYER_GESTURES_ZOOM, true)
val playerBrightnessRemember =
sharedPreferences.getBoolean(Constants.PREF_PLAYER_BRIGHTNESS_REMEMBER, false)
diff --git a/app/src/main/java/dev/jdtech/jellyfin/utils/Constants.kt b/app/src/main/java/dev/jdtech/jellyfin/utils/Constants.kt
index 3ecb4a7b..74f8c190 100644
--- a/app/src/main/java/dev/jdtech/jellyfin/utils/Constants.kt
+++ b/app/src/main/java/dev/jdtech/jellyfin/utils/Constants.kt
@@ -9,6 +9,8 @@ object Constants {
// pref
const val PREF_PLAYER_GESTURES = "pref_player_gestures"
+ const val PREF_PLAYER_GESTURES_VB = "pref_player_gestures_vb"
+ const val PREF_PLAYER_GESTURES_ZOOM = "pref_player_gestures_zoom"
const val PREF_PLAYER_BRIGHTNESS_REMEMBER = "pref_player_brightness_remember"
const val PREF_PLAYER_BRIGHTNESS = "pref_player_brightness"
const val PREF_IMAGE_CACHE = "pref_image_cache"
diff --git a/app/src/main/java/dev/jdtech/jellyfin/utils/PlayerGestureHelper.kt b/app/src/main/java/dev/jdtech/jellyfin/utils/PlayerGestureHelper.kt
index 9b7b830e..740a266c 100644
--- a/app/src/main/java/dev/jdtech/jellyfin/utils/PlayerGestureHelper.kt
+++ b/app/src/main/java/dev/jdtech/jellyfin/utils/PlayerGestureHelper.kt
@@ -20,8 +20,6 @@ class PlayerGestureHelper(
private val playerView: StyledPlayerView,
private val audioManager: AudioManager
) {
-
-
/**
* Tracks whether video content should fill the screen, cutting off unwanted content on the sides.
* Useful on wide-screen phones to remove black bars from some movies.
@@ -37,12 +35,17 @@ class PlayerGestureHelper(
private var swipeGestureValueTrackerVolume = -1f
private var swipeGestureValueTrackerBrightness = -1f
- private val gestureDetector = GestureDetector(playerView.context, object : GestureDetector.SimpleOnGestureListener() {
- override fun onDoubleTap(e: MotionEvent): Boolean {
+ private val tapGestureDetector = GestureDetector(playerView.context, object : GestureDetector.SimpleOnGestureListener() {
+ override fun onSingleTapUp(e: MotionEvent?): Boolean {
+ playerView.apply {
+ if (!isControllerFullyVisible) showController() else hideController()
+ }
return true
}
+ })
- override fun onSingleTapUp(e: MotionEvent?): Boolean {
+ private val gestureDetector = GestureDetector(playerView.context, object : GestureDetector.SimpleOnGestureListener() {
+ override fun onSingleTapUp(e: MotionEvent): Boolean {
playerView.apply {
if (!isControllerFullyVisible) showController() else hideController()
}
@@ -142,33 +145,63 @@ class PlayerGestureHelper(
playerView.resizeMode = if (enabled) AspectRatioFrameLayout.RESIZE_MODE_ZOOM else AspectRatioFrameLayout.RESIZE_MODE_FIT
}
+ private fun releaseAction(event: MotionEvent) {
+ if (event.action == MotionEvent.ACTION_UP) {
+ activity.binding.gestureVolumeLayout.apply {
+ if (visibility == View.VISIBLE) {
+ removeCallbacks(hideGestureVolumeIndicatorOverlayAction)
+ postDelayed(hideGestureVolumeIndicatorOverlayAction, 1000)
+ }
+ }
+ activity.binding.gestureBrightnessLayout.apply {
+ if (visibility == View.VISIBLE) {
+ removeCallbacks(hideGestureBrightnessIndicatorOverlayAction)
+ postDelayed(hideGestureBrightnessIndicatorOverlayAction, 1000)
+ }
+ }
+ }
+ }
+
init {
if (appPreferences.playerBrightnessRemember) {
activity.window.attributes.screenBrightness = appPreferences.playerBrightness
}
- @Suppress("ClickableViewAccessibility")
- playerView.setOnTouchListener { _, event ->
- if (playerView.useController) {
- when (event.pointerCount) {
- 1 -> gestureDetector.onTouchEvent(event)
- 2 -> zoomGestureDetector.onTouchEvent(event)
- }
- }
- if(event.action == MotionEvent.ACTION_UP) {
- activity.binding.gestureVolumeLayout.apply {
- if (visibility == View.VISIBLE) {
- removeCallbacks(hideGestureVolumeIndicatorOverlayAction)
- postDelayed(hideGestureVolumeIndicatorOverlayAction, 1000)
+
+ if (appPreferences.playerGesturesVB && !appPreferences.playerGesturesZoom) {
+ @Suppress("ClickableViewAccessibility")
+ playerView.setOnTouchListener { _, event ->
+ if (playerView.useController) {
+ if (event.pointerCount == 1) {
+ gestureDetector.onTouchEvent(event)
}
}
- activity.binding.gestureBrightnessLayout.apply {
- if (visibility == View.VISIBLE) {
- removeCallbacks(hideGestureBrightnessIndicatorOverlayAction)
- postDelayed(hideGestureBrightnessIndicatorOverlayAction, 1000)
+ releaseAction(event)
+ true
+ }
+ } else if (!appPreferences.playerGesturesVB && appPreferences.playerGesturesZoom) {
+ @Suppress("ClickableViewAccessibility")
+ playerView.setOnTouchListener { _, event ->
+ if (playerView.useController) {
+ when (event.pointerCount) {
+ 1 -> tapGestureDetector.onTouchEvent(event)
+ 2 -> zoomGestureDetector.onTouchEvent(event)
}
}
+ releaseAction(event)
+ true
+ }
+ } else if (appPreferences.playerGesturesVB && appPreferences.playerGesturesZoom) {
+ @Suppress("ClickableViewAccessibility")
+ playerView.setOnTouchListener { _, event ->
+ if (playerView.useController) {
+ when (event.pointerCount) {
+ 1 -> gestureDetector.onTouchEvent(event)
+ 2 -> zoomGestureDetector.onTouchEvent(event)
+ }
+ }
+ releaseAction(event)
+ true
}
- true
}
}
}
diff --git a/app/src/main/res/values-b+es+419/strings.xml b/app/src/main/res/values-b+es+419/strings.xml
index 5d2e1f67..32cb0d81 100644
--- a/app/src/main/res/values-b+es+419/strings.xml
+++ b/app/src/main/res/values-b+es+419/strings.xml
@@ -122,5 +122,5 @@
Gestos
Recordar el nivel de brillo
Gestos del reproductor
- Desliza hacia arriba y hacia abajo en el lado derecho de la pantalla para cambiar el volumen y en el lado izquierdo para cambiar el brillo
+ Desliza hacia arriba y hacia abajo en el lado derecho de la pantalla para cambiar el volumen y en el lado izquierdo para cambiar el brillo
\ No newline at end of file
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 878cfba2..9f744776 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -121,5 +121,5 @@
Zeige erweiterten Episodentitel inklusiver der Staffel und Episodeninformationen (SXX:EXX - Episodenname).
Native Drittanbieter Jellyfin App
Sicher, dass du den Server %1$s entfernen willst
- Wische auf der rechten Seite des Bildschirms hoch und runter, um die Lautstärke anzupassen und auf der linken Seite, um gleiches mit der Helligkeit zu machen
+ Wische auf der rechten Seite des Bildschirms hoch und runter, um die Lautstärke anzupassen und auf der linken Seite, um gleiches mit der Helligkeit zu machen
\ No newline at end of file
diff --git a/app/src/main/res/values-es-rMX/strings.xml b/app/src/main/res/values-es-rMX/strings.xml
index 6a00fd2a..135d9d79 100644
--- a/app/src/main/res/values-es-rMX/strings.xml
+++ b/app/src/main/res/values-es-rMX/strings.xml
@@ -122,5 +122,5 @@
Gestos del reproductor
Recordar el nivel de brillo
Gestos
- Desliza hacia arriba y hacia abajo en el lado derecho de la pantalla para cambiar el volumen y en el lado izquierdo para cambiar el brillo
+ Desliza hacia arriba y hacia abajo en el lado derecho de la pantalla para cambiar el volumen y en el lado izquierdo para cambiar el brillo
\ No newline at end of file
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 1911c2b9..d31e6ee4 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -122,5 +122,5 @@
Gestos
Gestos del reproductor
Recordar nivel de brillo
- Deslice hacia arriba y hacia abajo en el lado derecho de la pantalla para cambiar el volumen y en el lado izquierdo para cambiar el brillo
+ Deslice hacia arriba y hacia abajo en el lado derecho de la pantalla para cambiar el volumen y en el lado izquierdo para cambiar el brillo
\ No newline at end of file
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 2af12818..cd302f8e 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -107,7 +107,7 @@
Toile de fond %1$s
Gestes
Gestes du lecteur
- Glissez vers le haut ou vers le bas sur le côté droit de l\'écran pour modifier le volume et sur le côté gauche de l\'écran pour modifier la luminosité
+ Glissez vers le haut ou vers le bas sur le côté droit de l\'écran pour modifier le volume et sur le côté gauche de l\'écran pour modifier la luminosité
Choisissez une version
Afficher le titre étendu inclut la numérotation de la saison et de l\'épisode (SXX:EXX - NomEpisode).
Adresse du serveur vide
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 0415b895..d1637f9b 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -7,7 +7,7 @@
Wybierz wersję
Pobieraj używając danych komórkowych
Używaj eksperymentalnego odtwarzacza MPV do odtwarzania wideo. MPV wspiera więcej kodeków wideo, audio i napisów.
- Przesuń w górę lub w dół po prawej stronie ekrany by zmienić głośność, po lewej stronie by zmienić jasność
+ Przesuń w górę lub w dół po prawej stronie ekrany by zmienić głośność, po lewej stronie by zmienić jasność
Wyświetlaj rozszerzoną nazwę odcinka, razem z informacją o sezonie i odcinku (SXX:EXX - NazwaOdcinka).
Zbyt wolna odpowiedź serwera: %1$s
Serwer już dodany
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index ae564ecf..517ec395 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -107,7 +107,7 @@
第三方原生Jellyfin app
用户名或密码错误
最新%1$s
- 在屏幕右侧上下划动来调整音量,在屏幕左侧上下划动来调整亮度
+ 在屏幕右侧上下划动来调整音量,在屏幕左侧上下划动来调整亮度
服务器版本过旧:%1$s。请更新您的服务器
服务器地址
你没有收藏过任何东西
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 73fefcde..ca5aabdd 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -101,7 +101,10 @@
%1$s backdrop
Gestures
Player gestures
- Swipe up and down on the right side of the screen to change the volume and on the left side to change the brightness
+ Volume and brightness gestures
+ Zoom gesture
+ Swipe up and down on the right side of the screen to change the volume and on the left side to change the brightness
+ Pinch to fill the screen with the video
Remember brightness level
Name
IMDB Rating
diff --git a/app/src/main/res/xml/fragment_settings_player.xml b/app/src/main/res/xml/fragment_settings_player.xml
index 0c1e3834..a43d33ae 100644
--- a/app/src/main/res/xml/fragment_settings_player.xml
+++ b/app/src/main/res/xml/fragment_settings_player.xml
@@ -21,10 +21,21 @@
+
+