diff --git a/src/main/kotlin/com/looker/droidify/entity/Product.kt b/src/main/kotlin/com/looker/droidify/entity/Product.kt index 322716d9..6000f1b6 100644 --- a/src/main/kotlin/com/looker/droidify/entity/Product.kt +++ b/src/main/kotlin/com/looker/droidify/entity/Product.kt @@ -93,7 +93,7 @@ data class Product( } fun serialize(generator: JsonGenerator) { - generator.writeNumberField("repositoryId",repositoryId) + generator.writeNumberField("repositoryId", repositoryId) generator.writeNumberField("serialVersion", 1) generator.writeStringField("packageName", packageName) generator.writeStringField("name", name) diff --git a/src/main/kotlin/com/looker/droidify/screen/ProductsAdapter.kt b/src/main/kotlin/com/looker/droidify/screen/ProductsAdapter.kt index 44edbba7..30ad219f 100644 --- a/src/main/kotlin/com/looker/droidify/screen/ProductsAdapter.kt +++ b/src/main/kotlin/com/looker/droidify/screen/ProductsAdapter.kt @@ -6,6 +6,7 @@ import android.graphics.drawable.GradientDrawable import android.view.Gravity import android.view.View import android.view.ViewGroup +import android.view.animation.AnimationUtils import android.widget.FrameLayout import android.widget.ImageView import android.widget.ProgressBar @@ -23,6 +24,8 @@ import com.looker.droidify.widget.CursorRecyclerAdapter class ProductsAdapter(private val onClick: (ProductItem) -> Unit) : CursorRecyclerAdapter() { + private var lastPosition = 0 + enum class ViewType { PRODUCT, LOADING, EMPTY } private class ProductViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { @@ -125,6 +128,11 @@ class ProductsAdapter(private val onClick: (ProductItem) -> Unit) : } } + override fun onViewDetachedFromWindow(holder: RecyclerView.ViewHolder) { + super.onViewDetachedFromWindow(holder) + holder.itemView.clearAnimation() + } + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { when (getItemEnumViewType(position)) { ViewType.PRODUCT -> { @@ -187,5 +195,12 @@ class ProductsAdapter(private val onClick: (ProductItem) -> Unit) : holder.text.text = emptyText } }::class + + val animation = AnimationUtils.loadAnimation( + holder.itemView.context, + if (position > lastPosition) R.anim.slide_up else R.anim.slide_down + ) + holder.itemView.startAnimation(animation) + lastPosition = holder.adapterPosition } } diff --git a/src/main/res/anim/slide_down.xml b/src/main/res/anim/slide_down.xml new file mode 100644 index 00000000..8e7e395f --- /dev/null +++ b/src/main/res/anim/slide_down.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/main/res/anim/slide_up.xml b/src/main/res/anim/slide_up.xml new file mode 100644 index 00000000..e91ebf22 --- /dev/null +++ b/src/main/res/anim/slide_up.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file