私はFresco 0.5.2を使用しました:
dependencies {
compile 'com.facebook.fresco:fresco:0.5.2'
}
SimpleDraweeView
を使用してdrawable
からgifイメージをロードしたい。ここに私のコードがあります:
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);
default_app
は単なるjpegイメージであり、機能しません。
これを Frescoのドキュメントを参照 として使用しました。パスまたはコードに問題はありますか?
FrescoにロードされるリソースイメージのURIを取得するには、ContentResolver.SCHEME_Android_RESOURCEの代わりに「res:/」を使用します。これは 通常の場合はURI に使用されます。
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);
DraweeControllerでもそのURIを使用できるはずです。
フレスコの サポートされているURI です。
Fresco 0.7.0を使用しています
ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithResourceId(R.drawable.image).build();
SimpleDraweeView draweeView = (SimpleDraweeView) v.findViewById(R.id.picture);
draweeView.setImageURI(imageRequest.getSourceUri());
Proguardを使用している場合は、proguardファイルに次の行を追加する必要があります。
-keep class com.facebook.imagepipeline.gif.** { *; }
-keep class com.facebook.imagepipeline.webp.** { *; }
これを使ってみてください:
String path = "res:/" + R.drawable.default_app; // Only one slash after res:
simpleDraweeView.setImageURI(Uri.parse(path));
ImageRequestまたはDraweeControllerを使用する必要はありません。
これを使ってみてください:
UriUtil.getUriForResourceId(resId)
使用できます
draweeView.setActualImageResource(R.drawable.background);