2016-06-22 1 views
0

J'essaie d'afficher l'image dans RecyclerView en utilisant Fresco. J'ai l'image dans mon système de fichiers et je veux l'afficher en SimpleDraweeView par emplacement d'image au format String. Mais dans cette vue j'ai une image vide. Le journal ne montre aucune erreur. Quelqu'un peut-il m'aider? Voici mon code où je suis en train de définir l'image:La fresque n'affiche pas l'image

imageView.setVisibility(View.VISIBLE); 
    if (new File(imageData.getLocation()).exists()){ 
     Uri fileLocationUri = Uri.parse("file:/" + imageData.getLocation()); 
     ImageRequest request = ImageRequest.fromUri(fileLocationUri); 
     DraweeController controller = Fresco.newDraweeControllerBuilder() 
       .setImageRequest(request) 
       .setOldController(imageView.getController()) 
       .setAutoPlayAnimations(true) 
       .build(); 
     imageView.setController(controller); 
    } 

emplacement de l'image est une chaîne, qui a commencé avec /, de sorte que l'analyseur retourne Uri résultat correct. Fichier XML:

<com.facebook.drawee.view.SimpleDraweeView 
     a:id = "@+id/outgoing_photo_view" 
     a:layout_width="300dp" 
     a:layout_height="300dp" 
     a:adjustViewBounds="true" 
     a:visibility="gone" 
     fresco:actualImageScaleType="focusCrop" 
     fresco:placeholderImageScaleType="fitCenter" 
     fresco:failureImageScaleType="centerInside" 
     fresco:retryImageScaleType="centerCrop" 
     fresco:roundAsCircle="false" 
     fresco:roundedCornerRadius="1dp" 
     fresco:roundTopLeft="true" 
     fresco:roundTopRight="false" 
     fresco:roundBottomLeft="false" 
     fresco:roundBottomRight="true" 
     fresco:roundingBorderWidth="2dp"/> 
+0

Serait-ce parce que vous avez une visibilité réglée sur le passé SimpleDraweeView? –

+0

@VishnuM. dans le code j'ai mis la visibilité à visible. J'ai carré vide, mais je l'ai. –

Répondre

1

Je suppose que votre fichier URI n'est pas valide.

Il devrait travailler avec quelque chose comme ceci:

File file = ... // your file 
Uri uri = Uri.fromFile(file); // to get a valid file:// URI 
DraweeController controller = Fresco.newDraweeControllerBuilder() 
     .setUri(uri) 
     .build(); 
+0

C'est du travail, mais j'ai de très forts gels lors du défilement des images. Profiler dit que 'Uri.fromFile()' prend tellement de ressources –

+1

Idéalement, vous devez préparer l'URI et le contrôleur à l'avance. Jetez un coup d'œil à cet exemple d'adaptateur pour une liste d'images locales: [LocalResourceSimpleAdapter] (https://github.com/facebook/fresco/blob/master/samples/scrollperf/src/main/java/com/facebook/ samples/scrollperf/data/impl/LocalResourceSimpleAdapter.java) Il dispose de 2 variantes pour le chargement différé ou la création préalable d'URI - voir 'mLazy'. –