1 Frage: Wie kann RecyclerView für Bilder mit mehreren Breiten und Höhen optimiert werden, um Sprünge / Verzögerungen / Ruckler zu vermeiden?

Frage erstellt am Mon, May 6, 2019 12:00 AM

Bei unserer App handelt es sich um eine bildintensive, auf Mode ausgerichtete App. Der Startbildschirm enthält einen Instagram-ähnlichen Feed, der die URL der Bilder vom Server lädt und mithilfe von Glide lädt.

Da wir RecyclerView verwenden, wird das Element jedes Mal neu gezeichnet, wenn es den Bildschirm verlässt. Das Problem ist, dass dies jedes Mal zu Verzögerungen führt, wenn der Benutzer einen Bildlauf nach unten (oder oben) ausführt und RecyclerView das Bild neu zeichnen muss (und dann adjustViewBounds aufruft), damit die Breite des Bildes die Bildschirmbreite "ausfüllt", während das Verhältnis beibehalten wird.

XML-Code von ImageView.

<ImageView
    android:id="@+id/homeFeed_IV_lookImage"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:scaleType="fitXY"
    app:imageUrl="@{homeFeedItemViewModel.lookImage}"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    tools:src="@drawable/static_image_1" />

Bindeadapter.

@BindingAdapter("imageUrl")
fun setImageUrl(imageView: ImageView, url: String?) {
    if (!url.isNullOrEmpty()) {
        imageView.displayImage(url)
    }
}

Nebenstellenfunktion.

fun ImageView.displayImage(url: String = "") {
    Glide.with(context)
            .load(url)
            .apply(RequestOptions().placeholder(R.color.imagePlaceholder)
                    .diskCacheStrategy(DiskCacheStrategy.ALL))
            .into(this)
}

Diese "Verzögerung /Verzögerung" gibt unangenehme Erfahrungen. Kann das Bild in RecyclerView auf irgendeine Weise geglättet werden?

    
3
  1. Da Ihre Bildansicht die Höhe basierend auf dem Seitenverhältnis und der Breite des Bildschirms anpasst, müssen Sie das Bild nicht skalieren. Versuchen Sie, Android zu entfernen: scaleType = "fitXY"
    2019-05-06 08: 04: 17Z
1 Antworten                              1                         

Mit ImageViews mit fester Größe können Sie möglicherweise die Leistung verbessern. Wenn Sie das Backend steuern und die Möglichkeit haben, mehr Informationen zu den Bildern als nur die URL einzuschließen (sodass Sie Breite und Höhe oder das Bildseitenverhältnis in Ihre Feed-Nutzdaten aufnehmen).

    
0
2019-05-08 09: 03: 29Z
Quelle platziert Hier