From 70ba5cd0e83539494721cfcba60754723d7b6c08 Mon Sep 17 00:00:00 2001 From: Jay Date: Sun, 10 Nov 2019 21:20:59 -0800 Subject: [PATCH] Translucent Nav Bar now follows app background instead of just being black/white Cleanup of warnings --- .../ui/library/LibraryCategoryView.kt | 2 +- .../tachiyomi/ui/library/LibraryController.kt | 2 +- .../kanade/tachiyomi/ui/main/MainActivity.kt | 32 +++++++++++++------ .../ui/setting/SettingsAboutController.kt | 2 +- .../kanade/tachiyomi/util/ViewExtensions.kt | 8 ----- 5 files changed, 26 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryView.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryView.kt index b64c25dbf7..1089b3b9be 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryView.kt @@ -232,7 +232,7 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att override fun dispatchTouchEvent(ev: MotionEvent?): Boolean { when (ev?.action) { - MotionEvent.ACTION_UP -> lastTouchUpY = ev?.y + MotionEvent.ACTION_UP -> lastTouchUpY = ev.y } return super.dispatchTouchEvent(ev) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt index 3fba4e0487..cf77f861ca 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt @@ -227,7 +227,7 @@ class LibraryController( View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION val statusScrim = view.findViewById(R.id.status_bar_scrim) as View statusScrim.setOnApplyWindowInsetsListener(HeightTopWindowInsetsListener) - view.doOnApplyWindowInsets { v, insets, padding -> + view.doOnApplyWindowInsets { _, insets, _ -> view.recycler.updatePaddingRelative( bottom = view.recycler.marginBottom + insets.systemWindowInsetBottom, top = view.recycler.marginTop + insets.systemWindowInsetTop diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt index a68c5301ce..59b5e7c3c6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt @@ -16,6 +16,7 @@ import android.view.View import android.view.ViewGroup import android.widget.FrameLayout import android.widget.LinearLayout +import androidx.core.graphics.ColorUtils import com.bluelinelabs.conductor.* import com.google.android.material.snackbar.Snackbar import eu.kanade.tachiyomi.Migrations @@ -33,8 +34,8 @@ import eu.kanade.tachiyomi.ui.manga.MangaController import eu.kanade.tachiyomi.ui.recent_updates.RecentChaptersController import eu.kanade.tachiyomi.ui.recently_read.RecentlyReadController import eu.kanade.tachiyomi.ui.setting.SettingsMainController -import eu.kanade.tachiyomi.util.NoopWindowInsetsListener import eu.kanade.tachiyomi.util.doOnApplyWindowInsets +import eu.kanade.tachiyomi.util.getResourceColor import eu.kanade.tachiyomi.util.launchUI import eu.kanade.tachiyomi.util.marginBottom import eu.kanade.tachiyomi.util.marginTop @@ -141,12 +142,6 @@ class MainActivity : BaseActivity() { true } - /*nav_view.doOnApplyWindowInsets { v, insets, padding -> - v.updatePaddingRelative( - start = padding.left + insets.systemWindowInsetLeft - ) - }*/ - val container: ViewGroup = findViewById(R.id.controller_container) val content: LinearLayout = findViewById(R.id.main_content) @@ -156,13 +151,32 @@ class MainActivity : BaseActivity() { content.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION - nav_view.doOnApplyWindowInsets { v, insets, padding -> + nav_view.doOnApplyWindowInsets { v, _, _ -> v.updatePaddingRelative( bottom = v.marginBottom, top = v.marginTop ) } - content.setOnApplyWindowInsetsListener(NoopWindowInsetsListener) + content.setOnApplyWindowInsetsListener { v, insets -> + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M && + (v.rootWindowInsets.systemWindowInsetLeft > 0 || + v.rootWindowInsets.systemWindowInsetRight > 0)) + window.navigationBarColor = Color.BLACK + else window.navigationBarColor = Color.argb(179, 0, 0, 0) + } else if (v.rootWindowInsets.systemWindowInsetLeft > 0 + || v.rootWindowInsets.systemWindowInsetRight > 0) { + window.navigationBarColor = + v.context.getResourceColor(android.R.attr.colorBackground) + } else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q + || insets.tappableElementInsets.bottom > 0) { + window.navigationBarColor = ColorUtils.setAlphaComponent( + v.context.getResourceColor(android.R.attr.colorBackground), 179) + } else window.navigationBarColor = getColor(android.R.color.transparent) + v.setPadding(insets.systemWindowInsetLeft, insets.systemWindowInsetTop, + insets.systemWindowInsetRight, 0) + insets + } val currentNightMode = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK if (Build.VERSION.SDK_INT >= 26 && currentNightMode == Configuration.UI_MODE_NIGHT_NO) { content.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAboutController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAboutController.kt index 72c49018fc..4e9ce3f6b5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAboutController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAboutController.kt @@ -174,7 +174,7 @@ class SettingsAboutController : SettingsController() { try { val inputDf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'", Locale.US) inputDf.timeZone = TimeZone.getTimeZone("UTC") - val date = inputDf.parse(BuildConfig.BUILD_TIME) + val date = inputDf.parse(BuildConfig.BUILD_TIME) ?: return BuildConfig.BUILD_TIME val outputDf = DateFormat.getDateTimeInstance( DateFormat.MEDIUM, DateFormat.SHORT, Locale.getDefault()) diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/ViewExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/ViewExtensions.kt index 56a1189d6a..3a8a0c852e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/ViewExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/ViewExtensions.kt @@ -136,14 +136,6 @@ inline val View.marginRight: Int inline val View.marginLeft: Int get() = (layoutParams as? ViewGroup.MarginLayoutParams)?.leftMargin ?: 0 -object NoopWindowInsetsListener : View.OnApplyWindowInsetsListener { - override fun onApplyWindowInsets(v: View, insets: WindowInsets): WindowInsets { - v.setPadding(insets.systemWindowInsetLeft,insets.systemWindowInsetTop,insets.systemWindowInsetRight,0) - //insets.consumeSystemWindowInsets() - return insets - } -} - object RecyclerWindowInsetsListener : View.OnApplyWindowInsetsListener { override fun onApplyWindowInsets(v: View, insets: WindowInsets): WindowInsets { v.setPadding(0,0,0,insets.systemWindowInsetBottom)