diff --git a/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/FavouriteCategoriesActivity.kt b/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/FavouriteCategoriesActivity.kt index 193743334..f7ad11271 100644 --- a/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/FavouriteCategoriesActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/FavouriteCategoriesActivity.kt @@ -3,6 +3,8 @@ package org.koitharu.kotatsu.favourites.ui.categories import android.content.Context import android.content.Intent import android.os.Bundle +import android.transition.Fade +import android.transition.TransitionManager import android.view.Menu import android.view.MenuItem import android.view.View @@ -22,6 +24,7 @@ import org.koitharu.kotatsu.base.ui.list.ListSelectionController import org.koitharu.kotatsu.core.model.FavouriteCategory import org.koitharu.kotatsu.databinding.ActivityCategoriesBinding import org.koitharu.kotatsu.favourites.ui.FavouritesActivity +import org.koitharu.kotatsu.favourites.ui.categories.adapter.CategoriesAdapter import org.koitharu.kotatsu.favourites.ui.categories.edit.FavouritesCategoryEditActivity import org.koitharu.kotatsu.list.ui.adapter.ListStateHolderListener import org.koitharu.kotatsu.list.ui.model.ListModel @@ -144,6 +147,10 @@ class FavouriteCategoriesActivity : } private fun onReorderModeChanged(isReorderMode: Boolean) { + val transition = Fade().apply { + duration = resources.getInteger(android.R.integer.config_shortAnimTime).toLong() + } + TransitionManager.beginDelayedTransition(binding.toolbar, transition) reorderHelper?.attachToRecyclerView(null) reorderHelper = if (isReorderMode) { selectionController.clear() diff --git a/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/CategoriesAdapter.kt b/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/adapter/CategoriesAdapter.kt similarity index 82% rename from app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/CategoriesAdapter.kt rename to app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/adapter/CategoriesAdapter.kt index 78ae70f17..0e5394f8f 100644 --- a/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/CategoriesAdapter.kt +++ b/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/adapter/CategoriesAdapter.kt @@ -1,11 +1,10 @@ -package org.koitharu.kotatsu.favourites.ui.categories +package org.koitharu.kotatsu.favourites.ui.categories.adapter import androidx.lifecycle.LifecycleOwner import androidx.recyclerview.widget.DiffUtil import coil.ImageLoader import com.hannesdorfmann.adapterdelegates4.AsyncListDifferDelegationAdapter -import org.koitharu.kotatsu.favourites.ui.categories.adapter.CategoryListModel -import org.koitharu.kotatsu.favourites.ui.categories.adapter.categoryAD +import org.koitharu.kotatsu.favourites.ui.categories.FavouriteCategoriesListListener import org.koitharu.kotatsu.list.ui.adapter.ListStateHolderListener import org.koitharu.kotatsu.list.ui.adapter.emptyStateListAD import org.koitharu.kotatsu.list.ui.adapter.loadingStateAD @@ -43,7 +42,11 @@ class CategoriesAdapter( override fun getChangePayload(oldItem: ListModel, newItem: ListModel): Any? { return when { oldItem is CategoryListModel && newItem is CategoryListModel -> { - if (oldItem.isReorderMode != newItem.isReorderMode) { + if (oldItem.category == newItem.category && + oldItem.mangaCount == newItem.mangaCount && + oldItem.covers == newItem.covers && + oldItem.isReorderMode != newItem.isReorderMode + ) { Unit } else { super.getChangePayload(oldItem, newItem) diff --git a/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/adapter/CategoryAD.kt b/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/adapter/CategoryAD.kt index 68df43a69..f4339c5f0 100644 --- a/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/adapter/CategoryAD.kt +++ b/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/adapter/CategoryAD.kt @@ -57,9 +57,12 @@ fun categoryAD( itemView.setOnLongClickListener(eventListener) itemView.setOnTouchListener(eventListener) - bind { - imageRequests.forEach { it?.dispose() } + bind { payloads -> binding.imageViewHandle.isVisible = item.isReorderMode + if (payloads.isNotEmpty()) { + return@bind + } + imageRequests.forEach { it?.dispose() } binding.textViewTitle.text = item.category.title binding.textViewSubtitle.text = if (item.mangaCount == 0) { getString(R.string.empty) @@ -73,7 +76,6 @@ fun categoryAD( repeat(coverViews.size) { i -> imageRequests[i] = coverViews[i].newImageRequest(item.covers.getOrNull(i)) .placeholder(R.drawable.ic_placeholder) - .crossfade(crossFadeDuration * (i + 1)) .fallback(fallback) .error(R.drawable.ic_placeholder) .allowRgb565(isLowRamDevice(context))