From 8781fd00e128146c5609693a405c21c30bc57800 Mon Sep 17 00:00:00 2001 From: Daniel Kao Date: Sun, 12 Sep 2021 14:37:51 +0800 Subject: [PATCH] hide buttons when scrolling translation --- .../TranslationViewController.kt | 47 +++++++++++-------- app/src/main/res/layout/translation_panel.xml | 1 + 2 files changed, 29 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/de/baumann/browser/view/viewControllers/TranslationViewController.kt b/app/src/main/java/de/baumann/browser/view/viewControllers/TranslationViewController.kt index 89f0bce49..a236d603a 100644 --- a/app/src/main/java/de/baumann/browser/view/viewControllers/TranslationViewController.kt +++ b/app/src/main/java/de/baumann/browser/view/viewControllers/TranslationViewController.kt @@ -21,9 +21,11 @@ import de.baumann.browser.unit.ViewUnit.dp import de.baumann.browser.util.TranslationLanguage import de.baumann.browser.view.NinjaToast import de.baumann.browser.view.NinjaWebView +import de.baumann.browser.view.NinjaWebView.OnScrollChangeListener import de.baumann.browser.view.Orientation import de.baumann.browser.view.TwoPaneLayout import de.baumann.browser.view.dialog.TranslationLanguageDialog +import java.lang.Math.abs class TranslationViewController( private val activity: Activity, @@ -31,12 +33,20 @@ class TranslationViewController( private val twoPaneLayout: TwoPaneLayout, private val showTranslationAction: () -> Unit, private val onTranslationClosed: () -> Unit, - private val onScrollChangeListener: NinjaWebView.OnScrollChangeListener + private val onScrollChangeListener: OnScrollChangeListener ) { private val config: ConfigManager by lazy { ConfigManager(activity) } private val webView: NinjaWebView by lazy { NinjaWebView(activity, null).apply { shouldHideTranslateContext = true + setScrollChangeListener(object: OnScrollChangeListener { + override fun onScrollChange(scrollY: Int, oldScrollY: Int) { + if (isScrollSynced) onScrollChangeListener.onScrollChange(scrollY, oldScrollY) + if (abs(scrollY - oldScrollY) > 10) { + hideControlButtons() + } + } + }) } } private val pageContainer: ViewGroup = translationViewBinding.pageContainer @@ -54,12 +64,7 @@ class TranslationViewController( translationViewBinding.translationFontMinus.setOnClickListener { decreaseFontSize() } translationViewBinding.translationClose.setOnClickListener { toggleTranslationWindow(false, onTranslationClosed) } - translationViewBinding.translationClose.setOnLongClickListener{ - translationViewBinding.pageScroller.visibility = INVISIBLE - translationViewBinding.controlsContainer.visibility = INVISIBLE - translationViewBinding.expandedButton.visibility = VISIBLE - true - } + translationViewBinding.translationClose.setOnLongClickListener{ hideControlButtons(); true } translationViewBinding.translationOrientation.setOnClickListener { val orientation = if (twoPaneLayout.getOrientation() == Orientation.Vertical) Orientation.Horizontal else Orientation.Vertical @@ -68,15 +73,9 @@ class TranslationViewController( translationViewBinding.translationOrientation.setOnLongClickListener{ twoPaneLayout.switchPanels() ; true } - translationViewBinding.syncScroll.setOnClickListener { - toggleSyncScroll(!isScrollSynced) - } + translationViewBinding.syncScroll.setOnClickListener { toggleSyncScroll(!isScrollSynced) } - translationViewBinding.expandedButton.setOnClickListener { - translationViewBinding.pageScroller.visibility = VISIBLE - translationViewBinding.controlsContainer.visibility = VISIBLE - translationViewBinding.expandedButton.visibility = INVISIBLE - } + translationViewBinding.expandedButton.setOnClickListener { showControlButtons() } translationViewBinding.translationLanguage.text = config.translationLanguage.value translationViewBinding.translationLanguage.setOnClickListener { @@ -87,6 +86,18 @@ class TranslationViewController( } } + private fun hideControlButtons() { + translationViewBinding.pageScroller.visibility = INVISIBLE + translationViewBinding.controlsContainer.visibility = INVISIBLE + translationViewBinding.expandedButton.visibility = VISIBLE + } + + private fun showControlButtons() { + translationViewBinding.pageScroller.visibility = VISIBLE + translationViewBinding.controlsContainer.visibility = VISIBLE + translationViewBinding.expandedButton.visibility = INVISIBLE + } + private fun changeTranslationLanguage(translationLanguage: TranslationLanguage) { val uri = Uri.parse(webView.url) val newUri = uri.removeQueryParam("_x_tr_tl").buildUpon() @@ -133,8 +144,6 @@ class TranslationViewController( private fun toggleSyncScroll(shouldSyncScroll: Boolean = false) { isScrollSynced = shouldSyncScroll - val listener = if (isScrollSynced) onScrollChangeListener else null - webView.setScrollChangeListener(listener) val drawable = if (isScrollSynced) R.drawable.selected_border_bg else R.drawable.backgound_with_border translationViewBinding.syncScroll.setBackgroundResource(drawable) } @@ -166,11 +175,11 @@ class TranslationViewController( // handle translate url if (config.translationMode == TranslationMode.PAPAGO_URL) { - updatePageViews(0) + updatePageViews(1) translateUrl(buildPUrlTranslateUrl(text)) return } else if (config.translationMode == TranslationMode.GOOGLE_URL) { - updatePageViews(0) + updatePageViews(1) translateUrl(buildGUrlTranslateUrl(text)) return } diff --git a/app/src/main/res/layout/translation_panel.xml b/app/src/main/res/layout/translation_panel.xml index 0ad32f785..2bbcd458a 100644 --- a/app/src/main/res/layout/translation_panel.xml +++ b/app/src/main/res/layout/translation_panel.xml @@ -3,6 +3,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" xmlns:tools="http://schemas.android.com/tools" + android:paddingBottom="2dp" android:background="@color/color_transparent">