diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/BooksFragment.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/BooksFragment.kt index 19c506696..727cfcdeb 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/BooksFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/BooksFragment.kt @@ -10,6 +10,7 @@ import android.view.ViewConfiguration import androidx.core.app.ActivityOptionsCompat import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat +import androidx.core.view.doOnPreDraw import androidx.core.view.isGone import androidx.fragment.app.activityViewModels import androidx.lifecycle.Lifecycle @@ -115,6 +116,10 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books), private var enableRefresh = true override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { + postponeEnterTransition() + view.doOnPreDraw { + startPostponedEnterTransition() + } arguments?.let { position = it.getInt("position", 0) groupId = it.getLong("groupId", -1) @@ -243,10 +248,11 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books), ).catch { AppLog.put("书架更新出错", it) }.conflate().flowOn(Dispatchers.Default).collect { list -> + if (view == null) return@collect binding.emptyView.isGone = list.isNotEmpty() binding.refreshLayout.isEnabled = enableRefresh && list.isNotEmpty() booksAdapter.setItems(list) - delay(100) + delay(500) } } } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/BookshelfFragment2.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/BookshelfFragment2.kt index eaebbd030..642a64dba 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/BookshelfFragment2.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/BookshelfFragment2.kt @@ -11,6 +11,7 @@ import androidx.appcompat.widget.SearchView import androidx.core.app.ActivityOptionsCompat import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat +import androidx.core.view.doOnPreDraw import androidx.core.view.isGone import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope @@ -51,6 +52,7 @@ import io.legado.app.utils.showDialogFragment import io.legado.app.utils.viewbindingdelegate.viewBinding import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job +import kotlinx.coroutines.delay import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.conflate import kotlinx.coroutines.flow.flowOn @@ -118,6 +120,10 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2) override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { setSupportToolbar(binding.topBar) + postponeEnterTransition() + view.doOnPreDraw { + startPostponedEnterTransition() + } initRecyclerView() initBookGroupData() initAllBooksData() @@ -205,7 +211,7 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2) if (data != bookGroups) { bookGroups = data booksAdapter.updateItems() - binding.tvEmptyMsg.isGone = getItemCount() > 0 + binding.emptyView.isGone = getItemCount() > 0 binding.refreshLayout.isEnabled = enableRefresh && getItemCount() > 0 } } @@ -299,10 +305,11 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2) ).catch { AppLog.put("书架更新出错", it) }.conflate().flowOn(Dispatchers.Default).collect { list -> - books = list + if (view == null) return@collect + binding.emptyView.isGone = list.isNotEmpty() + binding.refreshLayout.isEnabled = enableRefresh && list.isNotEmpty() booksAdapter.updateItems() - binding.tvEmptyMsg.isGone = getItemCount() > 0 - binding.refreshLayout.isEnabled = enableRefresh && getItemCount() > 0 + delay(500) } } } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterList.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterList.kt index 27ff43f0f..72f3dfc98 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterList.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleDefalut/BooksAdapterList.kt @@ -104,13 +104,13 @@ class BooksAdapterList( holder.itemView.apply { binding.cvContent.setOnClickListener { getItem(holder.layoutPosition)?.let { - callBack.open(it, binding.cvContent) + callBack.open(it, binding.cdCover) } } binding.cvContent.onLongClick { getItem(holder.layoutPosition)?.let { - callBack.openBookInfo(it, binding.cvContent) + callBack.openBookInfo(it, binding.cdCover) } } } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGrid.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGrid.kt index 943a0a82d..b820a34d8 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGrid.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterGrid.kt @@ -92,10 +92,10 @@ class BooksAdapterGrid(context: Context, callBack: CallBack) : fun registerListener(item: Any) { binding.cvContent.setOnClickListener { - callBack.onItemClick(item, binding.ivCover) + callBack.onItemClick(item, binding.cvContent) } binding.cvContent.onLongClick { - callBack.onItemLongClick(item, binding.ivCover) + callBack.onItemLongClick(item, binding.cvContent) } } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterList.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterList.kt index 7cc486668..58d988b88 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterList.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/styleFold/BooksAdapterList.kt @@ -113,10 +113,10 @@ class BooksAdapterList(context: Context, callBack: CallBack) : fun registerListener(item: Any) { binding.cvContent.setOnClickListener { - callBack.onItemClick(item, binding.cvContent) + callBack.onItemClick(item, binding.cdCover) } binding.cvContent.onLongClick { - callBack.onItemLongClick(item, binding.cvContent) + callBack.onItemLongClick(item, binding.cdCover) } } diff --git a/app/src/main/res/layout/fragment_bookshelf2.xml b/app/src/main/res/layout/fragment_bookshelf2.xml index 9948cb02a..32a4c539a 100644 --- a/app/src/main/res/layout/fragment_bookshelf2.xml +++ b/app/src/main/res/layout/fragment_bookshelf2.xml @@ -1,7 +1,6 @@ @@ -62,15 +61,12 @@ - + app:messageText="@string/bookshelf_empty"/>