From 96108bc1ec12845d717c51ced955e86d09739169 Mon Sep 17 00:00:00 2001 From: tom5079 Date: Tue, 13 Oct 2020 23:34:16 +0900 Subject: [PATCH] Improves Scroll Jitter --- app/release/output-metadata.json | 8 ++-- .../pupil/adapters/GalleryBlockAdapter.kt | 38 +++++++++++-------- .../xyz/quaver/pupil/ui/view/TagChipGroup.kt | 27 +++++++++---- 3 files changed, 44 insertions(+), 29 deletions(-) diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index 935f2638..af776550 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -1,19 +1,17 @@ { - "version": 1, + "version": 2, "artifactType": { "type": "APK", "kind": "Directory" }, "applicationId": "xyz.quaver.pupil", - "variantName": "release", + "variantName": "processReleaseResources", "elements": [ { "type": "SINGLE", "filters": [], - "properties": [], "versionCode": 63, - "versionName": "5.1.4-hotfix1", - "enabled": true, + "versionName": "5.1.5", "outputFile": "app-release.apk" } ] diff --git a/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt index 50c981fe..d6d9f1eb 100644 --- a/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt +++ b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt @@ -20,6 +20,7 @@ package xyz.quaver.pupil.adapters import android.content.Context import android.graphics.drawable.Drawable +import android.util.Log import android.util.SparseBooleanArray import android.view.LayoutInflater import android.view.View @@ -229,24 +230,29 @@ class GalleryBlockAdapter(private val galleries: List) : RecyclerSwipeAdapt } tags.clear() - tags.addAll( - galleryBlock.relatedTags.sortedBy { - val tag = Tag.parse(it) - if (favoriteTags.contains(tag)) - -1 - else - when(Tag.parse(it).area) { - "female" -> 0 - "male" -> 1 - else -> 2 - } - }.map { - Tag.parse(it) + CoroutineScope(Dispatchers.IO).launch { + tags.addAll( + galleryBlock.relatedTags.sortedBy { + val tag = Tag.parse(it) + + if (favoriteTags.contains(tag)) + -1 + else + when(Tag.parse(it).area) { + "female" -> 0 + "male" -> 1 + else -> 2 + } + }.map { + Tag.parse(it) + } + ) + + launch(Dispatchers.Main) { + refresh() } - ) - - refresh() + } } galleryblock_id.text = galleryBlock.id.toString() diff --git a/app/src/main/java/xyz/quaver/pupil/ui/view/TagChipGroup.kt b/app/src/main/java/xyz/quaver/pupil/ui/view/TagChipGroup.kt index 7e76dd26..c0004260 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/view/TagChipGroup.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/view/TagChipGroup.kt @@ -21,8 +21,13 @@ package xyz.quaver.pupil.ui.view import android.content.Context import android.content.res.TypedArray import android.util.AttributeSet +import android.util.Log import com.google.android.material.chip.Chip import com.google.android.material.chip.ChipGroup +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.launch import xyz.quaver.pupil.R import xyz.quaver.pupil.types.Tag import xyz.quaver.pupil.types.Tags @@ -69,16 +74,22 @@ class TagChipGroup @JvmOverloads constructor(context: Context, attr: AttributeSe fun refresh() { this.removeAllViews() - tags.take(maxChipSize).forEach { - this.addView(TagChip(context, it).apply { - setOnClickListener { - onClickListener?.invoke(this.tag) + CoroutineScope(Dispatchers.Main).launch { + tags.take(maxChipSize).map { + CoroutineScope(Dispatchers.Default).async { + TagChip(context, it).apply { + setOnClickListener { + onClickListener?.invoke(this.tag) + } + } } - }) - } + }.forEach { + addView(it.await()) + } - if (maxChipSize > 0 && this.size > maxChipSize) - addView(moreView) + if (maxChipSize > 0 && tags.size > maxChipSize && parent == null) + addView(moreView) + } } init {