J'ai utilisé Fresco 0.5.2:
dependencies {
compile 'com.facebook.fresco:fresco:0.5.2'
}
Je veux utiliser SimpleDraweeView
pour charger une image gif de drawable
. Voici mon code:
String path = ContentResolver.SCHEME_Android_RESOURCE + "://"+ getResources().getResourcePackageName(R.drawable.default_app) + "/"
+ getResources().getResourceTypeName(R.drawable.default_app) + "/"
+ getResources().getResourceEntryName(R.drawable.default_app);
Uri uri = Uri.parse(path);
simpleDraweeView =(SimpleDraweeView)
this.findViewById(R.id.simple_drawee_view);
ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithSource(uri).build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setImageRequest(imageRequest)
.setAutoPlayAnimations(true)
.build();
simpleDraweeView.setController(controller);
Le default_app
est juste une image jpeg et cela ne fonctionne pas.
J'ai utilisé ceci comme la documentation de Fresco mentionnée . Y at-il un problème avec le chemin ou le code?
Pour obtenir l'URI de l'image de ressource à charger dans Fresco, utilisez "res: /" au lieu de ContentResolver.SCHEME_Android_RESOURCE, qui est utilisé pour URI en temps normal .
import com.facebook.common.util.UriUtil;
Uri uri = new Uri.Builder()
.scheme(UriUtil.LOCAL_RESOURCE_SCHEME) // "res"
.path(String.valueOf(resId))
.build();
// uri looks like res:/123456789
simpleDraweeView.setImageURI(uri);
Vous devriez également pouvoir utiliser cet URI avec un DraweeController.
Voici les URI prises en charge de Fresco.
J'utilise Fresco 0.7.0
ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithResourceId(R.drawable.image).build();
SimpleDraweeView draweeView = (SimpleDraweeView) v.findViewById(R.id.picture);
draweeView.setImageURI(imageRequest.getSourceUri());
Si vous utilisez proguard, vous devez ajouter ces lignes dans votre fichier proguard:
-keep class com.facebook.imagepipeline.gif.** { *; }
-keep class com.facebook.imagepipeline.webp.** { *; }
Essayez d'utiliser ceci:
String path = "res:/" + R.drawable.default_app; // Only one slash after res:
simpleDraweeView.setImageURI(Uri.parse(path));
Pas besoin d'utiliser ImageRequest ou DraweeController.
Essayez d'utiliser ceci:
UriUtil.getUriForResourceId (resId)
Il y a une implémentation du code de NoActivity.Java dans la bibliothèque Fresco:
ImageRequestBuilder.newBuilderWithResourceId(R.drawable.resId).build()