From b2b12f7b93bf172050ef91c21a2dfe4e68c04058 Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Wed, 25 Oct 2023 23:36:43 +0800 Subject: [PATCH] Migrate from RikkaX Insets to Insetter --- .../kotlin/com/hippo/ehviewer/ui/EhActivity.kt | 3 --- .../com/hippo/ehviewer/ui/scene/DownloadsScene.kt | 3 +++ .../com/hippo/ehviewer/ui/scene/FavoritesScene.kt | 5 +++++ .../ehviewer/ui/scene/GalleryCommentsScene.kt | 3 +++ .../hippo/ehviewer/ui/scene/GalleryListScene.kt | 10 +++++++++- .../com/hippo/ehviewer/ui/scene/SearchBarScene.kt | 2 ++ .../com/hippo/ehviewer/util/WindowInsetsUtil.kt | 10 ++++++++++ app/src/main/res/layout/scene_download.xml | 14 +++++++------- app/src/main/res/layout/scene_favorites.xml | 3 +-- app/src/main/res/layout/scene_gallery_comments.xml | 12 ++++-------- app/src/main/res/layout/scene_gallery_list.xml | 9 +++------ app/src/main/res/layout/widget_content_layout.xml | 8 ++------ app/src/main/res/values/dimens.xml | 2 +- gradle/libs.versions.toml | 3 +-- 14 files changed, 51 insertions(+), 36 deletions(-) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/EhActivity.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/EhActivity.kt index 4d49cf246..2e48bdac9 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/EhActivity.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/EhActivity.kt @@ -25,8 +25,6 @@ import com.hippo.ehviewer.R import com.hippo.ehviewer.Settings import eu.kanade.tachiyomi.util.system.isNightMode import eu.kanade.tachiyomi.util.view.setSecureScreen -import rikka.insets.WindowInsetsHelper -import rikka.layoutinflater.view.LayoutInflaterFactory abstract class EhActivity : AppCompatActivity() { @StyleRes @@ -44,7 +42,6 @@ abstract class EhActivity : AppCompatActivity() { } override fun onCreate(savedInstanceState: Bundle?) { - layoutInflater.factory2 = LayoutInflaterFactory(delegate).addOnViewCreatedListener(WindowInsetsHelper.LISTENER) super.onCreate(savedInstanceState) WindowCompat.getInsetsController(window, window.decorView).isAppearanceLightStatusBars = !isNightMode() WindowCompat.getInsetsController(window, window.decorView).isAppearanceLightNavigationBars = !isNightMode() diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/DownloadsScene.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/DownloadsScene.kt index 991681962..51cb7226e 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/DownloadsScene.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/DownloadsScene.kt @@ -102,6 +102,7 @@ import com.hippo.ehviewer.ui.tools.CropDefaults import com.hippo.ehviewer.ui.tools.DialogState import com.hippo.ehviewer.util.FileUtils import com.hippo.ehviewer.util.LongList +import com.hippo.ehviewer.util.applyNavigationBarsPadding import com.hippo.ehviewer.util.containsIgnoreCase import com.hippo.ehviewer.util.sendTo import com.hippo.unifile.UniFile @@ -353,6 +354,8 @@ class DownloadsScene : mKeyword = it.takeUnless { it.isEmpty() } updateInfoList() } + binding.fastScroller.applyNavigationBarsPadding() + binding.recyclerView.applyNavigationBarsPadding() return binding.root } diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/FavoritesScene.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/FavoritesScene.kt index 35e376ed2..84d5a1d3d 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/FavoritesScene.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/FavoritesScene.kt @@ -81,11 +81,13 @@ import com.hippo.ehviewer.ui.setMD3Content import com.hippo.ehviewer.ui.tools.DialogState import com.hippo.ehviewer.util.ExceptionUtils import com.hippo.ehviewer.util.SimpleHandler +import com.hippo.ehviewer.util.applyNavigationBarsPadding import com.hippo.ehviewer.util.getValue import com.hippo.ehviewer.util.lazyMut import com.hippo.ehviewer.util.setValue import eu.kanade.tachiyomi.util.lang.launchIO import eu.kanade.tachiyomi.util.lang.withIOContext +import eu.kanade.tachiyomi.util.system.dpToPx import java.time.Instant import java.time.LocalDateTime import java.time.ZoneId @@ -333,6 +335,7 @@ class FavoritesScene : SearchBarScene() { drawable.setBounds(0, 0, drawable.intrinsicWidth, drawable.intrinsicHeight) binding.tip.setCompoundDrawables(null, drawable, null, null) binding.tip.setOnClickListener { mAdapter?.retry() } + binding.refreshLayout.setProgressViewOffset(true, 0, 64.dpToPx) binding.refreshLayout.setOnRefreshListener { switchFav(urlBuilder.favCat) } val transition = ViewTransition(binding.refreshLayout, binding.progress, binding.tip) val empty = getString(R.string.gallery_list_empty_hit) @@ -428,6 +431,8 @@ class FavoritesScene : SearchBarScene() { } }) itemTouchHelper.attachToRecyclerView(binding.recyclerView) + binding.fastScroller.applyNavigationBarsPadding() + binding.recyclerView.applyNavigationBarsPadding() return binding.root } diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.kt index a111b853b..29de3e56e 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.kt @@ -87,6 +87,7 @@ import com.hippo.ehviewer.util.ReadableTime import com.hippo.ehviewer.util.SimpleAnimatorListener import com.hippo.ehviewer.util.TextUrl import com.hippo.ehviewer.util.addTextToClipboard +import com.hippo.ehviewer.util.applyNavigationBarsPadding import com.hippo.ehviewer.util.getParcelableCompat import com.hippo.ehviewer.util.toBBCode import eu.kanade.tachiyomi.util.lang.launchIO @@ -258,6 +259,8 @@ class GalleryCommentsScene : BaseToolbarScene(), View.OnClickListener, OnRefresh binding.fab.setOnClickListener(this) mViewTransition = ViewTransition(binding.refreshLayout, tip) updateView(false) + binding.editPanel.applyNavigationBarsPadding() + binding.fabLayout.applyNavigationBarsPadding() return binding.root } diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/GalleryListScene.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/GalleryListScene.kt index c86f0f07b..e26bf34c0 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/GalleryListScene.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/GalleryListScene.kt @@ -100,6 +100,7 @@ import com.hippo.ehviewer.updater.AppUpdater import com.hippo.ehviewer.util.AnimationUtils import com.hippo.ehviewer.util.ExceptionUtils import com.hippo.ehviewer.util.SimpleAnimatorListener +import com.hippo.ehviewer.util.applyNavigationBarsPadding import com.hippo.ehviewer.util.getParcelableCompat import com.hippo.ehviewer.util.getValue import com.hippo.ehviewer.util.lazyMut @@ -107,6 +108,7 @@ import com.hippo.ehviewer.util.setValue import eu.kanade.tachiyomi.util.lang.launchIO import eu.kanade.tachiyomi.util.lang.withIOContext import eu.kanade.tachiyomi.util.lang.withUIContext +import eu.kanade.tachiyomi.util.system.dpToPx import java.io.File import java.time.Instant import java.time.LocalDateTime @@ -363,6 +365,7 @@ class GalleryListScene : SearchBarScene() { drawable.setBounds(0, 0, drawable.intrinsicWidth, drawable.intrinsicHeight) binding.tip.setCompoundDrawables(null, drawable, null, null) binding.tip.setOnClickListener { mAdapter?.retry() } + binding.refreshLayout.setProgressViewOffset(true, 0, 64.dpToPx) binding.refreshLayout.setOnRefreshListener { mUrlBuilder.setIndex(null, true) mUrlBuilder.mJumpTo = null @@ -490,7 +493,12 @@ class GalleryListScene : SearchBarScene() { } binding.fabLayout.primaryFab!!.setImageDrawable(actionFabDrawable) binding.searchFab.setOnClickListener { onApplySearch() } - (binding.searchFab.parent as View).bringToFront() + (binding.searchFab.parent as View).apply { + bringToFront() + applyNavigationBarsPadding() + } + binding.fastScroller.applyNavigationBarsPadding() + binding.recyclerView.applyNavigationBarsPadding() // Update list url builder onUpdateUrlBuilder() diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/SearchBarScene.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/SearchBarScene.kt index 73b308c64..92561a3f9 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/SearchBarScene.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/SearchBarScene.kt @@ -43,6 +43,7 @@ import com.hippo.ehviewer.ui.legacy.FabLayout import com.hippo.ehviewer.ui.setMD3Content import com.hippo.ehviewer.util.AnimationUtils import com.hippo.ehviewer.util.SimpleAnimatorListener +import com.hippo.ehviewer.util.applyNavigationBarsPadding import com.jamal.composeprefs3.ui.ifNotNullThen import com.jamal.composeprefs3.ui.ifTrueThen import eu.kanade.tachiyomi.util.lang.launchIO @@ -116,6 +117,7 @@ abstract class SearchBarScene : BaseScene(), ToolBarScene { binding.searchview.addTransitionListener(mSearchViewOnBackPressedCallback) requireActivity().onBackPressedDispatcher.addCallback(mSearchViewOnBackPressedCallback) binding.appbar.bringToFront() + fabLayout.applyNavigationBarsPadding() return binding.root } diff --git a/app/src/main/kotlin/com/hippo/ehviewer/util/WindowInsetsUtil.kt b/app/src/main/kotlin/com/hippo/ehviewer/util/WindowInsetsUtil.kt index 8636875a0..a6323d291 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/util/WindowInsetsUtil.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/util/WindowInsetsUtil.kt @@ -1,11 +1,13 @@ package com.hippo.ehviewer.util +import android.view.View import androidx.compose.foundation.layout.WindowInsets import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalLayoutDirection import androidx.core.graphics.Insets import androidx.core.view.WindowInsetsCompat +import dev.chrisbanes.insetter.applyInsetter import kotlin.contracts.InvocationKind import kotlin.contracts.contract @@ -30,3 +32,11 @@ fun WindowInsetsCompat.Builder.set(type: Int, insets: WindowInsets): WindowInset ), ) } + +fun View.applyNavigationBarsPadding() { + applyInsetter { + type(navigationBars = true) { + padding() + } + } +} diff --git a/app/src/main/res/layout/scene_download.xml b/app/src/main/res/layout/scene_download.xml index d04502c67..cdac59992 100644 --- a/app/src/main/res/layout/scene_download.xml +++ b/app/src/main/res/layout/scene_download.xml @@ -21,25 +21,26 @@ android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent" - app:layout_behavior="@string/appbar_scrolling_view_behavior"> + android:clipChildren="false" + app:layout_behavior="@string/searchbar_scrolling_view_behavior"> + android:paddingVertical="@dimen/gallery_list_margin_v" /> + android:paddingBottom="8dp" /> @@ -58,8 +59,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:paddingEnd="@dimen/corner_fab_margin" - android:paddingBottom="@dimen/corner_fab_margin" - app:fitsSystemWindowsInsets="bottom"> + android:paddingBottom="@dimen/corner_fab_margin"> + android:paddingBottom="@dimen/corner_fab_margin"> + android:paddingBottom="@dimen/fab_rv_padding_size" /> @@ -43,8 +42,7 @@ android:layout_gravity="center" android:drawablePadding="8dp" android:gravity="center_horizontal" - android:text="@string/no_one_comments_gallery" - app:fitsSystemWindowsInsets="bottom" /> + android:text="@string/no_one_comments_gallery" /> + android:visibility="invisible"> + android:paddingBottom="@dimen/corner_fab_margin"> + android:paddingTop="@dimen/gallery_padding_top_search_bar" /> + android:paddingBottom="@dimen/corner_fab_margin"> + android:paddingBottom="@dimen/corner_fab_margin"> + android:paddingVertical="@dimen/gallery_list_margin_v" /> @@ -67,7 +64,6 @@ android:layout_marginTop="@dimen/gallery_padding_top_search_bar" android:paddingStart="20dp" android:paddingEnd="4dp" - android:paddingVertical="8dp" - app:fitsSystemWindowsInsets="bottom" /> + android:paddingVertical="8dp" /> diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 2e4c413c3..2f04a581d 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -41,7 +41,7 @@ 10dp - 64dp + 80dp 480dp 320dp diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2b17fba0c..82a9e7c20 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -125,7 +125,6 @@ photoview = "com.github.chrisbanes:PhotoView:2.3.0" r8 = { module = "com.android.tools:r8", version.ref = "android-tools-r8" } rikkax-core = "dev.rikka.rikkax.core:core-ktx:1.4.1" -rikkax-insets = "dev.rikka.rikkax.insets:insets:1.3.0" rikkax-layoutinflater = "dev.rikka.rikkax.layoutinflater:layoutinflater:1.3.0" splitties-appctx = { module = "com.louiscad.splitties:splitties-appctx", version.ref = "splitties" } @@ -144,7 +143,7 @@ cronet = ["cronet-api", "cronet-gms"] kotlinx-serialization = ["kotlinx-serialization-cbor", "kotlinx-serialization-json", "kotlinx-serialization-json-okio"] ktor = ["ktor-io-jvm", "ktor-utils-jvm"] okhttp = ["okhttp-android", "okhttp-coroutines"] -rikkax = ["rikkax-core", "rikkax-insets", "rikkax-layoutinflater"] +rikkax = ["rikkax-core", "rikkax-layoutinflater"] splitties = ["splitties-appctx", "splitties-arch-room", "splitties-preferences", "splitties-systemservices"] [plugins]