2016-04-07 7 views
1

Ich benutze Fresco, um Gif in einem Recyclerview zu laden.Gif blinkt in RecyclerView mit Fresco

Hier ist mein Kotlin Code:

fun loadResizeImage(uri: Uri, view: SimpleDraweeView, width: Int, height: Int) { 
    val request = ImageRequestBuilder.newBuilderWithSource(uri) 
      .setResizeOptions(ResizeOptions(width, height)).build() 

val controller = Fresco.newDraweeControllerBuilder() 
     .setOldController(view.controller) 
     .setImageRequest(request) 
     .build() 
view.controller = controller 

Ich spiele nicht die gif, ich laden Sie es einfach als statisches Bild. Aber wenn ich notifydatasetchanged aufrufen, blinkt das gif. Ich habe supportsChangeAnimations auf false gesetzt, und nur das gif blinkt. Kann mir jemand helfen?

+0

Sie einen Controller zurücksetzen.Können Sie vermeiden, dass, wenn die Controller-URI nicht geändert hat? Das sollte das Blinken verhindern. – Droidekas

+0

Ich kann die URI als ein Tag für die Ansicht festlegen. Wenn das Tag mit dem URI übereinstimmt, mache ich einfach nicht die Dinge im Block? –

+0

Ja das könnte funktionieren – Droidekas

Antwort

0

Meine Lösung ist, Tag zu der Ansicht zu setzen, wenn das Tag mit der uri übereinstimmt, werde ich das Bild nicht neu laden. Aber ich finde, wenn ich notifyDataSetChange anrufe, wird das Tag, das ich auf die Ansicht gesetzt habe, geändert. Aber wenn ich notifyItemChanged anrufe, tut es das nicht. Ich habe keine Ahnung, warum sich das Tag geändert hat (ich habe den RecyclerView nicht durchgeblättert).

+0

bist du fest. ?? Ich auch mit dem gleichen Problem .. Wie setze Tag .. ?? Hilf mir –