在 Fresco 的 SimpleDraweeView 中加载可绘制图像资源
Loading Drawable Image Resource in Fresco's SimpleDraweeView
我用的是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's documentation mentioned。
路径或代码有问题吗?
要获取Fresco中要加载的资源图片的URI,使用"res:/"代替ContentResolver.SCHEME_ANDROID_RESOURCE,用于URIs in a normal case。
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);
您应该也可以将该 URI 与 DraweeController 一起使用。
这是 Fresco 的 supported URIs。
试试这个:
String path = "res:/" + R.drawable.default_app; // Only one slash after res:
simpleDraweeView.setImageURI(Uri.parse(path));
无需使用 ImageRequest 或 DraweeController。
Fresco 库中有 NoActivity.java 代码的实现:
ImageRequestBuilder.newBuilderWithResourceId(R.drawable.resId).build()
我正在使用 Fresco 0.7.0
ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithResourceId(R.drawable.image).build();
SimpleDraweeView draweeView = (SimpleDraweeView) v.findViewById(R.id.picture);
draweeView.setImageURI(imageRequest.getSourceUri());
如果您使用混淆器,您需要在混淆器文件中添加这些行:
-keep class com.facebook.imagepipeline.gif.** { *; }
-keep class com.facebook.imagepipeline.webp.** { *; }
试试这个:
UriUtil.getUriForResourceId(resId)
您可以使用
draweeView.setActualImageResource(R.drawable.background);
我用的是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's documentation mentioned。 路径或代码有问题吗?
要获取Fresco中要加载的资源图片的URI,使用"res:/"代替ContentResolver.SCHEME_ANDROID_RESOURCE,用于URIs in a normal case。
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);
您应该也可以将该 URI 与 DraweeController 一起使用。
这是 Fresco 的 supported URIs。
试试这个:
String path = "res:/" + R.drawable.default_app; // Only one slash after res:
simpleDraweeView.setImageURI(Uri.parse(path));
无需使用 ImageRequest 或 DraweeController。
Fresco 库中有 NoActivity.java 代码的实现:
ImageRequestBuilder.newBuilderWithResourceId(R.drawable.resId).build()
我正在使用 Fresco 0.7.0
ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithResourceId(R.drawable.image).build();
SimpleDraweeView draweeView = (SimpleDraweeView) v.findViewById(R.id.picture);
draweeView.setImageURI(imageRequest.getSourceUri());
如果您使用混淆器,您需要在混淆器文件中添加这些行:
-keep class com.facebook.imagepipeline.gif.** { *; }
-keep class com.facebook.imagepipeline.webp.** { *; }
试试这个:
UriUtil.getUriForResourceId(resId)
您可以使用
draweeView.setActualImageResource(R.drawable.background);