Split gesture option into volume & brightness and zoom (#121)
This commit is contained in:
parent
c1740c1b68
commit
7cdc74d2e7
12 changed files with 83 additions and 32 deletions
|
@ -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)
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -122,5 +122,5 @@
|
|||
<string name="gestures">Gestos</string>
|
||||
<string name="player_brightness_remember">Recordar el nivel de brillo</string>
|
||||
<string name="player_gestures">Gestos del reproductor</string>
|
||||
<string name="player_gestures_summary">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</string>
|
||||
<string name="player_gestures_vb_summary">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</string>
|
||||
</resources>
|
|
@ -121,5 +121,5 @@
|
|||
<string name="display_extended_title_summary">Zeige erweiterten Episodentitel inklusiver der Staffel und Episodeninformationen (SXX:EXX - Episodenname).</string>
|
||||
<string name="app_description">Native Drittanbieter Jellyfin App</string>
|
||||
<string name="remove_server_dialog_text">Sicher, dass du den Server %1$s entfernen willst</string>
|
||||
<string name="player_gestures_summary">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</string>
|
||||
<string name="player_gestures_vb_summary">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</string>
|
||||
</resources>
|
|
@ -122,5 +122,5 @@
|
|||
<string name="player_gestures">Gestos del reproductor</string>
|
||||
<string name="player_brightness_remember">Recordar el nivel de brillo</string>
|
||||
<string name="gestures">Gestos</string>
|
||||
<string name="player_gestures_summary">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</string>
|
||||
<string name="player_gestures_vb_summary">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</string>
|
||||
</resources>
|
|
@ -122,5 +122,5 @@
|
|||
<string name="gestures">Gestos</string>
|
||||
<string name="player_gestures">Gestos del reproductor</string>
|
||||
<string name="player_brightness_remember">Recordar nivel de brillo</string>
|
||||
<string name="player_gestures_summary">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</string>
|
||||
<string name="player_gestures_vb_summary">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</string>
|
||||
</resources>
|
|
@ -107,7 +107,7 @@
|
|||
<string name="image_description_backdrop">Toile de fond %1$s</string>
|
||||
<string name="gestures">Gestes</string>
|
||||
<string name="player_gestures">Gestes du lecteur</string>
|
||||
<string name="player_gestures_summary">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é</string>
|
||||
<string name="player_gestures_vb_summary">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é</string>
|
||||
<string name="select_video_version_title">Choisissez une version</string>
|
||||
<string name="display_extended_title_summary">Afficher le titre étendu inclut la numérotation de la saison et de l\'épisode (SXX:EXX - NomEpisode).</string>
|
||||
<string name="add_server_empty_error">Adresse du serveur vide</string>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<string name="select_a_version">Wybierz wersję</string>
|
||||
<string name="download_mobile_data">Pobieraj używając danych komórkowych</string>
|
||||
<string name="mpv_player_summary">Używaj eksperymentalnego odtwarzacza MPV do odtwarzania wideo. MPV wspiera więcej kodeków wideo, audio i napisów.</string>
|
||||
<string name="player_gestures_summary">Przesuń w górę lub w dół po prawej stronie ekrany by zmienić głośność, po lewej stronie by zmienić jasność</string>
|
||||
<string name="player_gestures_vb_summary">Przesuń w górę lub w dół po prawej stronie ekrany by zmienić głośność, po lewej stronie by zmienić jasność</string>
|
||||
<string name="display_extended_title_summary">Wyświetlaj rozszerzoną nazwę odcinka, razem z informacją o sezonie i odcinku (SXX:EXX - NazwaOdcinka).</string>
|
||||
<string name="add_server_error_slow">Zbyt wolna odpowiedź serwera: %1$s</string>
|
||||
<string name="add_server_error_already_added">Serwer już dodany</string>
|
||||
|
|
|
@ -107,7 +107,7 @@
|
|||
<string name="app_description">第三方原生Jellyfin app</string>
|
||||
<string name="login_error_wrong_username_password">用户名或密码错误</string>
|
||||
<string name="latest_library">最新%1$s</string>
|
||||
<string name="player_gestures_summary">在屏幕右侧上下划动来调整音量,在屏幕左侧上下划动来调整亮度</string>
|
||||
<string name="player_gestures_vb_summary">在屏幕右侧上下划动来调整音量,在屏幕左侧上下划动来调整亮度</string>
|
||||
<string name="add_server_error_outdated">服务器版本过旧:%1$s。请更新您的服务器</string>
|
||||
<string name="edit_text_server_address_hint">服务器地址</string>
|
||||
<string name="no_favorites">你没有收藏过任何东西</string>
|
||||
|
|
|
@ -101,7 +101,10 @@
|
|||
<string name="image_description_backdrop">%1$s backdrop</string>
|
||||
<string name="gestures">Gestures</string>
|
||||
<string name="player_gestures">Player gestures</string>
|
||||
<string name="player_gestures_summary">Swipe up and down on the right side of the screen to change the volume and on the left side to change the brightness</string>
|
||||
<string name="player_gestures_vb">Volume and brightness gestures</string>
|
||||
<string name="player_gestures_zoom">Zoom gesture</string>
|
||||
<string name="player_gestures_vb_summary">Swipe up and down on the right side of the screen to change the volume and on the left side to change the brightness</string>
|
||||
<string name="player_gestures_zoom_summary">Pinch to fill the screen with the video</string>
|
||||
<string name="player_brightness_remember">Remember brightness level</string>
|
||||
<string name="sort_by_options_0">Name</string>
|
||||
<string name="sort_by_options_1">IMDB Rating</string>
|
||||
|
|
|
@ -21,10 +21,21 @@
|
|||
<SwitchPreference
|
||||
app:defaultValue="true"
|
||||
app:key="pref_player_gestures"
|
||||
app:summary="@string/player_gestures_summary"
|
||||
app:title="@string/player_gestures" />
|
||||
<SwitchPreference
|
||||
app:defaultValue="true"
|
||||
app:dependency="pref_player_gestures"
|
||||
app:key="pref_player_gestures_vb"
|
||||
app:summary="@string/player_gestures_vb_summary"
|
||||
app:title="@string/player_gestures_vb" />
|
||||
<SwitchPreference
|
||||
app:defaultValue="true"
|
||||
app:dependency="pref_player_gestures"
|
||||
app:key="pref_player_gestures_zoom"
|
||||
app:summary="@string/player_gestures_zoom_summary"
|
||||
app:title="@string/player_gestures_zoom" />
|
||||
<SwitchPreference
|
||||
app:dependency="pref_player_gestures_vb"
|
||||
app:key="pref_player_brightness_remember"
|
||||
app:title="@string/player_brightness_remember" />
|
||||
</PreferenceCategory>
|
||||
|
|
Loading…
Reference in a new issue