修复共享动画的闪烁问题

This commit is contained in:
HapeLee committed 2025-09-22 20:05:03 +08:00
1 parent 6d19ffeb80
commit 6f5545ef08
4 files changed
+8 -9

No files matched your search

@@ -32,6 +32,7 @@ import com.google.android.material.color.DynamicColors
import com.google.android.material.color.DynamicColorsOptions import com.google.android.material.color.DynamicColorsOptions
import com.google.android.material.color.MaterialColors import com.google.android.material.color.MaterialColors
import com.google.android.material.transition.platform.MaterialContainerTransform import com.google.android.material.transition.platform.MaterialContainerTransform
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback
import io.legato.kazusa.R import io.legato.kazusa.R
import io.legato.kazusa.base.VMBaseActivity import io.legato.kazusa.base.VMBaseActivity
import io.legato.kazusa.constant.BookType import io.legato.kazusa.constant.BookType
@@ -171,6 +172,8 @@ class BookInfoActivity :
@SuppressLint("PrivateResource") @SuppressLint("PrivateResource")
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
postponeEnterTransition() postponeEnterTransition()
setEnterSharedElementCallback(MaterialContainerTransformSharedElementCallback())
setExitSharedElementCallback(MaterialContainerTransformSharedElementCallback())
val transform = MaterialContainerTransform().apply { val transform = MaterialContainerTransform().apply {
addTarget(binding.cdCov) addTarget(binding.cdCov)
scrimColor = Color.TRANSPARENT scrimColor = Color.TRANSPARENT
@@ -445,7 +445,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
if (loadingViewVisible) { if (loadingViewVisible) {
binding.llLoading.isGone = true binding.llLoading.isGone = true
binding.llRetry.isVisible = true binding.llRetry.isVisible = true
binding.tvMsg.text = msg binding.tvMsg2.setMessage(msg)
} else { } else {
loadMoreView.error(null, "加载失败,点击重试") loadMoreView.error(null, "加载失败,点击重试")
} }
@@ -786,7 +786,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
if (paddingDp == 0) { if (paddingDp == 0) {
recyclerView.setPadding(0, 0, 0, 0) recyclerView.setPadding(0, 0, 0, 0)
} else if (width > 0) { } else if (width > 0) {
val paddingPx = (width * paddingDp / 100).toInt() val paddingPx = (width * paddingDp / 100)
recyclerView.setPadding(paddingPx, 0, paddingPx, 0) recyclerView.setPadding(paddingPx, 0, paddingPx, 0)
} }
} }
@@ -18,13 +18,11 @@ import androidx.activity.addCallback
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.PopupMenu import androidx.appcompat.widget.PopupMenu
import androidx.core.view.doOnPreDraw
import androidx.core.view.get import androidx.core.view.get
import androidx.core.view.size import androidx.core.view.size
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.google.android.material.transition.platform.MaterialContainerTransform import com.google.android.material.transition.platform.MaterialContainerTransform
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback
import com.google.android.material.transition.platform.MaterialSharedAxis
import com.jaredrummler.android.colorpicker.ColorPickerDialogListener import com.jaredrummler.android.colorpicker.ColorPickerDialogListener
import io.legato.kazusa.BuildConfig import io.legato.kazusa.BuildConfig
import io.legato.kazusa.R import io.legato.kazusa.R
@@ -266,6 +264,7 @@ class ReadBookActivity : BaseReadBookActivity(),
if (AppConfig.sharedElementEnterTransitionEnable) { if (AppConfig.sharedElementEnterTransitionEnable) {
setEnterSharedElementCallback(MaterialContainerTransformSharedElementCallback()) setEnterSharedElementCallback(MaterialContainerTransformSharedElementCallback())
setExitSharedElementCallback(MaterialContainerTransformSharedElementCallback())
val transform = MaterialContainerTransform().apply { val transform = MaterialContainerTransform().apply {
addTarget(binding.root) addTarget(binding.root)
scrimColor = Color.TRANSPARENT scrimColor = Color.TRANSPARENT
@@ -14,7 +14,6 @@ import android.widget.ImageView
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.core.view.get import androidx.core.view.get
import androidx.core.view.isVisible
import androidx.core.view.postDelayed import androidx.core.view.postDelayed
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
@@ -24,6 +23,7 @@ import androidx.viewpager.widget.ViewPager
import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
import com.google.android.material.navigation.NavigationBarView import com.google.android.material.navigation.NavigationBarView
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback
import io.legato.kazusa.BuildConfig import io.legato.kazusa.BuildConfig
import io.legato.kazusa.R import io.legato.kazusa.R
import io.legato.kazusa.base.VMBaseActivity import io.legato.kazusa.base.VMBaseActivity
@@ -40,7 +40,6 @@ import io.legato.kazusa.help.storage.Backup
import io.legato.kazusa.lib.dialogs.alert import io.legato.kazusa.lib.dialogs.alert
import io.legato.kazusa.service.BaseReadAloudService import io.legato.kazusa.service.BaseReadAloudService
import io.legato.kazusa.ui.about.CrashLogsDialog import io.legato.kazusa.ui.about.CrashLogsDialog
import io.legato.kazusa.ui.book.read.ReadBookActivity
import io.legato.kazusa.ui.book.search.SearchActivity import io.legato.kazusa.ui.book.search.SearchActivity
import io.legato.kazusa.ui.main.bookshelf.BaseBookshelfFragment import io.legato.kazusa.ui.main.bookshelf.BaseBookshelfFragment
import io.legato.kazusa.ui.main.bookshelf.books.BookshelfFragment1 import io.legato.kazusa.ui.main.bookshelf.books.BookshelfFragment1
@@ -49,10 +48,8 @@ import io.legato.kazusa.ui.main.bookshelf.books.BookshelfFragment3
import io.legato.kazusa.ui.main.explore.ExploreFragment import io.legato.kazusa.ui.main.explore.ExploreFragment
import io.legato.kazusa.ui.main.my.MyFragment import io.legato.kazusa.ui.main.my.MyFragment
import io.legato.kazusa.ui.main.rss.RssFragment import io.legato.kazusa.ui.main.rss.RssFragment
import io.legato.kazusa.ui.welcome.WelcomeActivity
import io.legato.kazusa.ui.widget.dialog.TextDialog import io.legato.kazusa.ui.widget.dialog.TextDialog
import io.legato.kazusa.utils.dpToPx import io.legato.kazusa.utils.dpToPx
import io.legato.kazusa.utils.getPrefBoolean
import io.legato.kazusa.utils.gone import io.legato.kazusa.utils.gone
import io.legato.kazusa.utils.hideSoftInput import io.legato.kazusa.utils.hideSoftInput
import io.legato.kazusa.utils.observeEvent import io.legato.kazusa.utils.observeEvent
@@ -108,7 +105,7 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setExitSharedElementCallback(MaterialContainerTransformSharedElementCallback())
if (savedInstanceState != null) { if (savedInstanceState != null) {
pagePosition = savedInstanceState.getInt("currentPagePosition", 0) pagePosition = savedInstanceState.getInt("currentPagePosition", 0)
} }