Android 毕加索从其URI加载可绘制资源

Android 毕加索从其URI加载可绘制资源,android,picasso,Android,Picasso,我必须将可绘制的从res显示到ImageView中。在这个应用程序中,出于某些原因,我使用毕加索 在这种情况下,我需要使用它的URI而不是id加载drawable。 为此,以下是我的代码: uri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://"+context.getPackageName()+"/drawable/" + drawableName); 此处使用的drawableName是文件名,而不是其资源ID 然后 我

我必须将
可绘制的
res
显示到
ImageView
中。在这个应用程序中,出于某些原因,我使用毕加索

在这种情况下,我需要使用它的URI而不是id加载
drawable
。 为此,以下是我的代码:

uri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://"+context.getPackageName()+"/drawable/" + drawableName);
此处使用的drawableName是文件名,而不是其资源ID

然后


我确信drawable name是正确的,但毕加索似乎不喜欢这个uri。

如果图像在您的drawable文件夹中,那么您可以直接加载它

Picasso.with(context).load(R.drawable.drawableName).into(imageView);

毕加索将加载它,不需要Uri。

找到了答案。不幸的是,毕加索不允许通过URI进行可绘制加载。这是一项新功能。

如的文档中所述

他们现在支持从URI加载图像,如下所示:

load(android.net.Uri uri) 
Picasso.with(context).load(uri).into(imageView); 
因此,您必须执行以下操作:

load(android.net.Uri uri) 
Picasso.with(context).load(uri).into(imageView); 
就像你已经在做的一样

希望有帮助。

  • 这是如果你不想硬编码你要去的图像 加载
如果知道要加载的图像的整数值,则可以从drawable文件夹延迟加载本地图像文件

然后你可以做:

Picasso.with(getContext()).load(imageResourceId)
.error(R.drawable.ic_launcher)
.into(imageView);
在哪里

图像视图

是要显示图像的视图。例如:

imageView = (ImageView) convertView
.findViewById(R.id.itemImage);
在哪里

图像资源ID

是可绘制图形的整数值。您可以通过以下方式检索此整数值:

int productImageId = resources.getIdentifier(
productImageName, "drawable", context.getPackageName());
以及

productImageName

要绘制的可绘制文件的名称(即“ic_启动器”)

这一切都可以从v2+的适配器内部完成。这里有一个很大的修改。新版本对于管理图像缓存数据非常有用。它使用单例实例

GRADLE

implementation 'com.squareup.picasso:picasso:2.71828'
设置可绘制图像

Picasso.get()
    .load(url)
    .placeholder(R.drawable.user_placeholder)
    .error(R.drawable.user_placeholder_error)
    .into(imageView);
奖金,按姓名提取:

public static int getDrawableIdFromFileName(Context context, String nameOfDrawable) {
        return context.getResources().getIdentifier(nameOfDrawable, "drawable", context.getPackageName());
}

你不能将任何内容“加载”到可绘图文件夹中,资源是只读的,我的英语不太好:)这不是你的英语,已经足够好了,我的意思是你不能将任何内容添加到可绘图文件夹中不,我没有将任何内容加载到可绘图文件夹中。我正在使用毕加索将一个可绘制文件加载到ImageView中。我需要对Drowables的动态引用,以便动态引用使用:int resId=this.ctx.getResources().getIdentifier(“:drawable/”+imageName,null,null);不适用于vector drawable,至少目前是这样,2018年7月30日,好吗?该方法适用于所有URI,但指向内部资源(如可绘制资源)的URI除外。Ie:
Uri.parse(“http://website.com/image.jpg“”
是毕加索的有效URI。但是毕加索无法加载带有
Uri.parse(“android”)的绘图。resource://your_drawable)
。正如他们所说,这项功能将适用于毕加索2.2+别管它。。可能还有其他人也有同样的疑问:)这仍然是这样吗?毕加索现在支持使用URI。参考这一点,但您必须使用毕加索jar v2.5才能使用它feature@Fahim,链接已移动,但是:可以在以下位置找到许多示例:您可以将图像放入drawable或mipmap中。一般来说,drawable文件夹适合保存形状、选择器和背景的xml。您还可以在drawable文件夹中放置9个修补程序图像。无法从mipmap文件夹中识别9修补程序。mipmap文件夹严格用于图像。通过这种方式,您可以对图像资源进行分类、组织和防止混合。答案就在这个名称上方:with()方法现在已不推荐使用,请使用Picasso.get().load(imageResourceId)。装入(imageView)它的可绘制id。您可以使用他的方法getDrawableIdFromFileName()获取它