Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android位图语法_Android_Bitmap_Imageview - Fatal编程技术网

Android位图语法

Android位图语法,android,bitmap,imageview,Android,Bitmap,Imageview,我想在Android中将位图加载到ImageView中,但我不想使用R.drawable语法,因为我有很多图像都有标准的命名约定,因此使用一些逻辑更容易获得图像。例如,我的所有图像都命名为: img1.png img2.png img3.png 因此,如果用户选择一个值,比如x,我会在ImageView中显示“img”+x+“.png”。看起来Bitmap.decodeFile是我需要的,但是我需要知道如何进入我的drawables文件夹的语法,因为图像就在那里。或者如果有更好的方法 我意识到我

我想在Android中将位图加载到ImageView中,但我不想使用R.drawable语法,因为我有很多图像都有标准的命名约定,因此使用一些逻辑更容易获得图像。例如,我的所有图像都命名为:

img1.png img2.png img3.png

因此,如果用户选择一个值,比如x,我会在ImageView中显示“img”+x+“.png”。看起来Bitmap.decodeFile是我需要的,但是我需要知道如何进入我的drawables文件夹的语法,因为图像就在那里。或者如果有更好的方法


我意识到我可以用一个switch语句来实现这一点,而不是连接图像名称,但由于我有这么多图像,这将需要很多行。

另一种方法是使用反射从R加载图像。您可以通过字符串名称查看静态变量。但请记住,反射可能很慢。如果要多次加载同一图像,可能需要保留一个name->R id的缓存

编辑:
您还可以通过URI访问它们。请参阅。

R.drawable值本身就是一个数字。您只需使用第一个图像id并添加一个固定值即可找到正确的图像。例如:

R.drawable.image1=1234; R.drawable.image2=1235; 等等

所以要得到图像2,我需要R.drawable.image1+1


每次重新生成R.java文件时,数字可能会更改,但顺序将相同。如果您不想依赖于此,则必须查看“资产”文件夹。

看起来我找到了解决方案。真正的问题是,我在运行时生成了资源名称,但我可以像这样获得资源id: getResources().getIdentifier(“string1”+string2,“id”,“com.company.package”)


然后,我可以将该值传递给setImageResource或任何其他接受资源id的方法。

这听起来似乎可行,但我可以想象,通过路径和名称引用文件会更简单。