2016-04-26 4 views
0

Ich habe eine SimpleDraweeView, die ein Bild Anfrage durch einen Controller verarbeitet:Fresko: SimpleDraweeView immer Reseting

Postprocessor redMeshPostprocessor = new BasePostprocessor() { 
       @Override 
       public String getName() { 
        return "redMeshPostprocessor"; 
       } 

       @Override 
       public CloseableReference<Bitmap> process(
         Bitmap sourceBitmap, 
         PlatformBitmapFactory bitmapFactory) { 
        //custom processing on the bitmap and returning it 

       } 
      }; 

      ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(coverImage)) 
        .setPostprocessor(redMeshPostprocessor) 
        .build(); 

      PipelineDraweeController controller = (PipelineDraweeController) 
        Fresco.newDraweeControllerBuilder() 
          .setImageRequest(request) 
          .setOldController(iv_cover.getController()) 
          // other setters as you need 
          .build(); 
      iv_cover.setController(controller); 

Dann später, möchte ich auf der SimpleDraweeView das Bild ändern, indem Sie einfach sagen:

iv_cover.setImageURI(Uri.parse(url)); 

Problem ist, dass beim Laden des zweiten Bildes, gibt es einen Bruchteil einer Sekunde, wo die SimpleDraweeView den Platzhalter zeigt. Wie vermeide ich das? Der Übergang zwischen den beiden Bildern soll lückenlos und glatt sein. Vielen Dank!

Antwort

1

Sie können dies tun:

PipelineDraweeController controller = (PipelineDraweeController) 
       Fresco.newDraweeControllerBuilder() 
         .setLowResImageRequest(previousRequest) 
         .setImageRequest(newRequest) 
         .setOldController(iv_cover.getController())       
         .build(); 
     iv_cover.setController(controller); 

Dies sollte Sie das Verhalten geben Sie wollen.

Verwandte Themen