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

View File

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

View File

@ -114,6 +114,10 @@ class SettingsFragment : ScreenFragment() {
is Preferences.Theme.Amoled -> getString(R.string.amoled) 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)) { preferences.addCategory(getString(R.string.install_types)) {
addSwitch( addSwitch(

View File

@ -75,6 +75,8 @@
<string name="light">Claro</string> <string name="light">Claro</string>
<string name="link_copied_to_clipboard">Link copiado al portapapeles</string> <string name="link_copied_to_clipboard">Link copiado al portapapeles</string>
<string name="links">Links</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="merging_FORMAT">Uniendo %s</string>
<string name="name">Nombre</string> <string name="name">Nombre</string>
<string name="network_error_DESC">Error de red.</string> <string name="network_error_DESC">Error de red.</string>

View File

@ -79,6 +79,8 @@
<string name="light">Chiaro</string> <string name="light">Chiaro</string>
<string name="link_copied_to_clipboard">Link copiato sulla clipboard</string> <string name="link_copied_to_clipboard">Link copiato sulla clipboard</string>
<string name="links">Links</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="merging_FORMAT">Unione %s</string>
<string name="name">Nome</string> <string name="name">Nome</string>
<string name="network_error_DESC">Errore di rete.</string> <string name="network_error_DESC">Errore di rete.</string>

View File

@ -79,6 +79,8 @@
<string name="light">Claro</string> <string name="light">Claro</string>
<string name="link_copied_to_clipboard">Link copiado para a área de transferência</string> <string name="link_copied_to_clipboard">Link copiado para a área de transferência</string>
<string name="links">Links</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="merging_FORMAT">Incorporando %s</string>
<string name="name">Nome</string> <string name="name">Nome</string>
<string name="network_error_DESC">Erro da rede.</string> <string name="network_error_DESC">Erro da rede.</string>

View File

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

View File

@ -80,6 +80,8 @@
<string name="light">Light</string> <string name="light">Light</string>
<string name="link_copied_to_clipboard">Link copied to clipboard</string> <string name="link_copied_to_clipboard">Link copied to clipboard</string>
<string name="links">Links</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="merging_FORMAT">Merging %s</string>
<string name="name">Name</string> <string name="name">Name</string>
<string name="network_error_DESC">Network error.</string> <string name="network_error_DESC">Network error.</string>