From 137690ceb737688eaf1aa3b6a3261c33a0d7f0c3 Mon Sep 17 00:00:00 2001 From: Ruben Gees Date: Wed, 27 Feb 2019 19:39:46 +0100 Subject: [PATCH] Fix delay for fullscreen in manga reader with cached mangas --- .../me/proxer/app/manga/MangaActivity.kt | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/src/main/kotlin/me/proxer/app/manga/MangaActivity.kt b/src/main/kotlin/me/proxer/app/manga/MangaActivity.kt index 93a88b59..27d7483d 100644 --- a/src/main/kotlin/me/proxer/app/manga/MangaActivity.kt +++ b/src/main/kotlin/me/proxer/app/manga/MangaActivity.kt @@ -89,8 +89,8 @@ class MangaActivity : BaseActivity() { val language: Language get() = when { intent.action == Intent.ACTION_VIEW -> ProxerUtils.toApiEnum( - intent.data?.pathSegments - ?.getOrElse(3) { "" } ?: "") ?: Language.ENGLISH + intent.data?.pathSegments?.getOrElse(3) { "" } ?: "" + ) ?: Language.ENGLISH else -> intent.getSerializableExtra(LANGUAGE_EXTRA) as Language } @@ -124,8 +124,7 @@ class MangaActivity : BaseActivity() { private val toolbar: Toolbar by bindView(R.id.toolbar) - private val hideHandler = FullscreenHandler(WeakReference(this)) - private var isFullscreen = false + private val fullscreenHandler = FullscreenHandler(WeakReference(this)) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -143,10 +142,7 @@ class MangaActivity : BaseActivity() { if (visibility and SYSTEM_UI_FLAG_FULLSCREEN == 0) { window.decorView.systemUiVisibility = defaultUiFlags() - if (isFullscreen) { - hideHandler.removeMessages(0) - hideHandler.sendEmptyMessageDelayed(0, 2_000) - } + toggleFullscreen(true, 2_000) } } } @@ -188,15 +184,15 @@ class MangaActivity : BaseActivity() { return super.onOptionsItemSelected(item) } - fun toggleFullscreen(fullscreen: Boolean) { - isFullscreen = fullscreen + fun toggleFullscreen(fullscreen: Boolean, delay: Long = 0) { + val fullscreenMessage = Message().apply { + what = 0 + obj = fullscreen + } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - if (fullscreen) { - window.decorView.systemUiVisibility = fullscreenUiFlags() - } else { - window.decorView.systemUiVisibility = defaultUiFlags() - } + if (!fullscreenHandler.hasMessages(0, fullscreen)) { + fullscreenHandler.removeMessages(0) + fullscreenHandler.sendMessageDelayed(fullscreenMessage, delay) } } @@ -241,8 +237,18 @@ class MangaActivity : BaseActivity() { } private class FullscreenHandler(private val activity: WeakReference) : Handler() { - override fun handleMessage(msg: Message?) { - activity.get()?.toggleFullscreen(true) + override fun handleMessage(message: Message) { + val fullscreen = message.data.getBoolean("fullscreen", true) + + this.activity.get()?.apply { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + if (fullscreen) { + window.decorView.systemUiVisibility = fullscreenUiFlags() + } else { + window.decorView.systemUiVisibility = defaultUiFlags() + } + } + } } } }