我已经从android项目的可绘制文件夹中找到了一些图片。
我创建了一些对象(代理),然后我需要使用我保存在数据库中的这张图片设置imageView
。
所以,我将图片保存为String photoPath
:
Uri path1 = Uri.parse("android.resource://"+BuildConfig.APPLICATION_ID+"/" + R.drawable.agent1);
String photoAg1 = path1.getPath();
ag1.setPhotoPath(photoAg1);
(我已经尝试过path1.toString。)
好的,直到那里没问题。
此对象显示在listView
ImageView
。
要在那里展示,我正在做:
ImageView photo = (ImageView) view.findViewById(R.id.list_cell_photo);
System.out.println(agent.getPhotoPath());
Bitmap bitmap = BitmapFactory.decodeFile(agent.getPhotoPath());
Bitmap lowdefbitmap = Bitmap.createScaledBitmap(bitmap,300,300,true);
photo.setImageBitmap(lowdefbitmap);
问题出在createScaledBitmap
上。
上面的错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:714)
从System.out.println
:/ 2131099732返回
如果我把path1.toString
返回的是:android.resource://com.aa.xlambton/2131099732
我已经看过了: Create a Bitmap/Drawable from file path
Android get image path from drawable as string
Get absolute path of android drawable image
我认为我保存此路径是错误的,因为Bitmap
无法对文件进行解码,因此它会变为空createdScaledBitmap
。
有人能帮助我吗?
答案 0 :(得分:1)
您可以将参考ID R.drawable.img_name
保存为整数而不是保存路径。
当您需要操纵此drawable时,您可以使用该id而不是Bitmap icon = BitmapFactory.decodeResource(context.getResources(),
saved_id);
。
如果您需要来自此drawable的位图,请关注this
{{1}}
答案 1 :(得分:0)
您可以尝试使用此方法:
R.drawable.img_name
答案 2 :(得分:0)
试试这个
public int getImage(String imageName) {
int drawableResourceId = context.getResources().getIdentifier(imageName, "drawable", context.getPackageName());
return drawableResourceId;
}
答案 3 :(得分:0)
在我的项目中,我想从项目文件夹中获取一些图像。因此有一种方法可以在java类中获取图像,但在.xml文件中它很简单。它显然是由资产管理器在android中完成的。
Follow this link
注意: AssetManager assetManager = getAssets();
必须位于youractvity.java文件中。