在,首先我在Stackoverflow和互联网上搜索并找到许多答案但是当我尝试这些答案但没有答案可以解决我的问题。在我的项目中,我创建了一个名为files
的目录。
Picasso.with(MainActivity.this).load("file:///files/img_4.jpg").error(R.drawable.eboss).into(imgArticle);
或
Picasso.with(MainActivity.this).load("/files/img_4.jpg").error(R.drawable.eboss).into(imgArticle);
或
File f = new File("files/img_4");
Picasso.with(MainActivity.this).load(f).error(R.drawable.eboss).into(imgArticle);
或
Picasso.with(MainActivity.this).load("file:/files/img_4.jpg").error(R.drawable.eboss).into(imgArticle);
但没有任何效果,我只看到错误图片。
答案 0 :(得分:4)
您也可以从文件加载图片。毕加索允许这样做。这就是毕加索的作品。
RESOURCE LOADING
Resources, assets, files, content providers are all supported as image sources.
Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
Picasso.with(context).load("file:///android_asset/DvpvklR.png").into(imageView2);
Picasso.with(context).load(new File(...)).into(imageView3);
load(new File(...)) - 这里的文件必须是/data/data/package.name / ...中创建的文件。
因此要么将文件复制到资源,要么指定/data/data/package.name / ...或sdcard的路径。请参阅this以了解如何从SD卡加载。您可以使用getFilessDir()在此处创建文件。
我认为android项目结构中没有文件/文件夹。您可以查看Managing Projects Overview。
答案 1 :(得分:1)
Picasso
将从您设备上的SD卡加载图片,而不是从AndroidStudio
项目加载。您可以做的是将您的图片移动到drawable-nodpi
文件夹中(如果它还不存在则创建它),然后您可以加载图片,如
Picasso.with(context).load(R.drawable.img_4).error(R.drawable.e;boss).into(imgArticle);
如果您要将文件作为assets
的一部分,那么您的目录应该被称为assets
而不是files
。您可以阅读更多here
答案 2 :(得分:1)
根据您对问题的评论,我认为您希望使用"文件"文件夹是因为您想要从数据库中检索名称来选择图像。
如果图像仍然保留在可绘制文件夹中,情况也是如此。
您可以使用从数据库中选择的名称获取可绘制资源,如下所示:
Drawable d= DrawableManager.getDrawable("img_4.png");
这将减少处理器在查找和读取存储空间时的负担,减少代码。
如果你必须通过图像名称获得资源ID,请使用:
int drawableResourceId = this.getResources().getIdentifier("drawableName", "drawable", this.getPackageName());
然后传递整数id而不是R.drawable.drawableName