android 壁画SimpleDraweeView中可绘制图像资源的加载

olqngx59  于 2023-02-06  发布在  Android
关注(0)|答案(7)|浏览(191)

我使用了壁画0.5.2

dependencies {
   compile 'com.facebook.fresco:fresco:0.5.2'
}

我想使用SimpleDraweeViewdrawable加载一个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图像,它不工作。
我用这个作为壁画的文件提到。有任何问题的路径或代码?

1sbrub3j

1sbrub3j1#

要获取要加载到Fresco中的资源图像的URI,请使用“res:/”,而不是用于URIs in a normal case的ContentResolver.SCHEME_ANDROID_RESOURCE。

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一起使用。
这是法斯科的supported URIs

nwlqm0z1

nwlqm0z12#

我使用的是壁画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.** { *; }
ejk8hzay

ejk8hzay3#

请尝试使用此:

String path = "res:/" + R.drawable.default_app; // Only one slash after res:
simpleDraweeView.setImageURI(Uri.parse(path));

无需使用ImageRequest或DraweeController。

gr8qqesn

gr8qqesn4#

请尝试使用此:
UriUtil. getUriForResourceId(资源标识)

dpiehjr4

dpiehjr45#

您可以使用
draweeView.setActualImageResource(R.drawable.background);

8i9zcol2

8i9zcol26#

在Fresco库中有一个www.example.com代码的实现NoActivity.java:

ImageRequestBuilder.newBuilderWithResourceId(R.drawable.resId).build()
isr3a4wc

isr3a4wc7#

请注意,XML可绘制对象不能直接用作SimpleDraweeView中的图像。
但是正如documentation所述,“如果您希望将XML可绘制对象显示为主图像,则将其设置为占位符并使用空URI。"

draweeView.setImageURI(null as String?)
draweeView.hierarchy.setPlaceholderImage(drawableImage)

相关问题