Update: Make List Animation Optional (Closes #53)

This commit is contained in:
LooKeR 2021-10-20 20:13:55 +05:30
parent 84bf96e42e
commit c458e39be7
8 changed files with 41 additions and 7 deletions

View File

@ -16,8 +16,17 @@ object Preferences {
private val subject = PublishSubject.create<Key<*>>()
private val keys = sequenceOf(
Key.AutoSync, Key.IncompatibleVersions, Key.ProxyHost, Key.ProxyPort, Key.ProxyType,
Key.RootPermission, Key.SortOrder, Key.Theme, Key.UpdateNotify, Key.UpdateUnstable
Key.AutoSync,
Key.IncompatibleVersions,
Key.ListAnimation,
Key.ProxyHost,
Key.ProxyPort,
Key.ProxyType,
Key.RootPermission,
Key.SortOrder,
Key.Theme,
Key.UpdateNotify,
Key.UpdateUnstable
).map { Pair(it.name, it) }.toMap()
fun init(context: Context) {
@ -117,6 +126,9 @@ object Preferences {
object IncompatibleVersions :
Key<Boolean>("incompatible_versions", Value.BooleanValue(false))
object ListAnimation :
Key<Boolean>("list_animation", Value.BooleanValue(true))
object ProxyHost : Key<String>("proxy_host", Value.StringValue("localhost"))
object ProxyPort : Key<Int>("proxy_port", Value.IntValue(9050))
object ProxyType : Key<Preferences.ProxyType>(

View File

@ -14,6 +14,7 @@ import androidx.recyclerview.widget.RecyclerView
import coil.transform.RoundedCornersTransformation
import com.google.android.material.imageview.ShapeableImageView
import com.looker.droidify.R
import com.looker.droidify.content.Preferences
import com.looker.droidify.database.Database
import com.looker.droidify.entity.ProductItem
import com.looker.droidify.entity.Repository
@ -131,8 +132,10 @@ class ProductsAdapter(private val onClick: (ProductItem) -> Unit) :
override fun onViewDetachedFromWindow(holder: RecyclerView.ViewHolder) {
super.onViewDetachedFromWindow(holder)
if (Preferences[Preferences.Key.ListAnimation]) {
holder.itemView.clearAnimation()
}
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
when (getItemEnumViewType(position)) {
@ -197,12 +200,17 @@ class ProductsAdapter(private val onClick: (ProductItem) -> Unit) :
holder.text.text = emptyText
}
}::class
if (Preferences[Preferences.Key.ListAnimation]) {
setAnimation(holder.itemView, holder.adapterPosition)
}
}
private fun setAnimation(itemView: View, position: Int) {
val animation = AnimationUtils.loadAnimation(
holder.itemView.context,
itemView.context,
if (position > lastPosition) R.anim.slide_up else R.anim.slide_down
)
holder.itemView.startAnimation(animation)
lastPosition = holder.adapterPosition
itemView.startAnimation(animation)
lastPosition = position
}
}

View File

@ -114,6 +114,10 @@ class SettingsFragment : ScreenFragment() {
is Preferences.Theme.Amoled -> getString(R.string.amoled)
}
}
addSwitch(
Preferences.Key.ListAnimation, getString(R.string.list_animation),
getString(R.string.list_animation_description)
)
}
preferences.addCategory(getString(R.string.install_types)) {
addSwitch(

View File

@ -75,6 +75,8 @@
<string name="light">Claro</string>
<string name="link_copied_to_clipboard">Link copiado al portapapeles</string>
<string name="links">Links</string>
<string name="list_animation">Lista de animaciones</string>
<string name="list_animation_description">"Habilitar la animación de lista en la página principal "</string>
<string name="merging_FORMAT">Uniendo %s</string>
<string name="name">Nombre</string>
<string name="network_error_DESC">Error de red.</string>

View File

@ -79,6 +79,8 @@
<string name="light">Chiaro</string>
<string name="link_copied_to_clipboard">Link copiato sulla clipboard</string>
<string name="links">Links</string>
<string name="list_animation">Elenco animazioni</string>
<string name="list_animation_description">Abilita l\'animazione dell\'elenco nella pagina principale</string>
<string name="merging_FORMAT">Unione %s</string>
<string name="name">Nome</string>
<string name="network_error_DESC">Errore di rete.</string>

View File

@ -79,6 +79,8 @@
<string name="light">Claro</string>
<string name="link_copied_to_clipboard">Link copiado para a área de transferência</string>
<string name="links">Links</string>
<string name="list_animation">Listar animações</string>
<string name="list_animation_description">Habilitar animação de lista na página principal</string>
<string name="merging_FORMAT">Incorporando %s</string>
<string name="name">Nome</string>
<string name="network_error_DESC">Erro da rede.</string>

View File

@ -79,6 +79,8 @@
<string name="light">亮色</string>
<string name="link_copied_to_clipboard">链接已复制到剪贴板</string>
<string name="links">链接</string>
<string name="list_animation">列出动画</string>
<string name="list_animation_description">在主页上启用列表动画</string>
<string name="merging_FORMAT">合并 %s</string>
<string name="name">名称</string>
<string name="network_error_DESC">网络错误.</string>

View File

@ -80,6 +80,8 @@
<string name="light">Light</string>
<string name="link_copied_to_clipboard">Link copied to clipboard</string>
<string name="links">Links</string>
<string name="list_animation">List Animations</string>
<string name="list_animation_description">Enable List Animation on Main Page</string>
<string name="merging_FORMAT">Merging %s</string>
<string name="name">Name</string>
<string name="network_error_DESC">Network error.</string>