Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.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
Java 如何以编程方式在android中添加数组中可绘制的所有图像_Java_Android_Image_Function_Android Drawable - Fatal编程技术网

Java 如何以编程方式在android中添加数组中可绘制的所有图像

Java 如何以编程方式在android中添加数组中可绘制的所有图像,java,android,image,function,android-drawable,Java,Android,Image,Function,Android Drawable,我有一个代码,允许我使用drawable文件夹中的图像,但所有图像都按名称存储在数组中- 我想通过函数以编程方式加载它们,并将它们存储在数组中 这是阵列: private int[]位图ID={R.drawable.elefant_001,R.drawable.elefant_002,R.drawable.elefant_003,R.drawable.elefant_004, R.drawable.elefant_005,R.drawable.elefant_006,R.drawable.ele

我有一个代码,允许我使用drawable文件夹中的图像,但所有图像都按名称存储在数组中-

我想通过函数以编程方式加载它们,并将它们存储在数组中

这是阵列:

private int[]位图ID={R.drawable.elefant_001,R.drawable.elefant_002,R.drawable.elefant_003,R.drawable.elefant_004,
R.drawable.elefant_005,R.drawable.elefant_006,R.drawable.elefant_007,
R.drawable.elefant_008,R.drawable.elefant_009,R.drawable.elefant_010,
R.drawable.elefant_011,R.drawable.elefant_012,R.drawable.elefant_013,
R.drawable.elefant_014,R.drawable.elefant_015,R.drawable.elefant_016,
R.drawable.elefant_017,R.drawable.elefant_018,R.drawable.elefant_019,
R.drawable.elefant_020,R.drawable.elefant_021,R.drawable.elefant_022,
R.drawable.elefant_022,R.drawable.elefant_023,R.drawable.elefant_024,
R.drawable.elefant_025,R.drawable.elefant_026,R.drawable.elefant_027,
R.drawable.elefant_028,R.drawable.elefant_029,R.drawable.elefant_030,
R.drawable.elefant_031,R.drawable.elefant_032,R.drawable.elefant_033,
R.drawable.elefant_034,R.drawable.elefant_035,R.drawable.elefant_036,
R.drawable.elefant_037,R.drawable.elefant_038,R.drawable.elefant_039,
R.drawable.elefant040};
我通过函数改变了它

public int[]位映射ID(){
Field[]ID_Fields=R.drawable.class.getFields();
int[]theBitmapIds=新的int[ID_Fields.length];
对于(int i=0;i
但是当我在其他函数中调用数组时,它仍然没有任何内容

公共位图getBitmap(整数宽度、整数高度、整数索引){
位图b=位图。创建位图(宽度、高度、,
位图.Config.ARGB_8888);
b、 擦除颜色(0xFFFFFF);
画布c=新画布(b);
Drawable d=getResources().getDrawable(BitMapId[index]);
整数裕度=1;
int-border=1;
Rect r=新的Rect(边距、边距、宽度-边距、高度-边距);
int imageWidth=r.width()-(边框*2);
int imageHeight=imageWidth*d.getIntrinsicHeight()
/d.getIntrinsicWidth();
如果(图像高度>r.高度()-(边框*2)){
图像高度=r.高度()-(边框*2);
imageWidth=imageHeight*d.getIntrinsicWidth()
/d.getIntrinsicHeight();
}
我很困惑,尤其是我是java的noob。我如何通过编辑函数或更改这行代码来让代码工作:

private int[]theBitmapIds=theBitmapIds();

Drawable d=getResources().getDrawable(bitmapid[index]);
请有人帮帮我!

您可以使用它们的路径直接加载资产

您可以通过调用
context.getAssets()
来获取其实例

使用它的
open()
方法,您将能够获得该资产的
InputStream


然后可以使用
BitmapFactory.decodeStream()
若要将其转换为
位图

请使用AssetManager直接加载带有路径的资产。我尝试过,但没有出现内存不足错误!如果加载的位图太大,设备无法处理,则会出现内存不足错误。大表示图像文件的大小(以字节为单位)。我不知道图像的大小,但您可以一次加载很多位图,这可能会引发错误。最好的方法是使用较小的图像。问题解决了,我使用了300多个大尺寸png,谢谢!