gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 23:19:31 39 4
gpt4 key购买 nike

我有一个代码可以让我使用可绘制文件夹中的图像,但所有图像都按名称存储在数组中-

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

这是数组:

private int[] theBitmapIds = { 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.elefant_040};

我是通过函数改的

public int [] theBitmapIds( ) {
Field[] ID_Fields = R.drawable.class.getFields();
int[] theBitmapIds = new int[ID_Fields.length];
for (int i = 0; i < ID_Fields.length; i++) {
try {
theBitmapIds[i] = ID_Fields[i].getInt( null );
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return theBitmapIds;
}

private int[] theBitmapIds=theBitmapIds( );

但是当我在其他函数中调用数组时,它仍然没有任何内容

public Bitmap getBitmap(int width, int height, int index) {
Bitmap b = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
b.eraseColor(0xFFFFFFFF);
Canvas c = new Canvas(b);
Drawable d = getResources().getDrawable(theBitmapIds[index]);

int margin = 1;
int border = 1;
Rect r = new Rect(margin, margin, width - margin, height - margin);

int imageWidth = r.width() - (border * 2);
int imageHeight = imageWidth * d.getIntrinsicHeight()
/ d.getIntrinsicWidth();
if (imageHeight > r.height() - (border * 2)) {
imageHeight = r.height() - (border * 2);
imageWidth = imageHeight * d.getIntrinsicWidth()
/ d.getIntrinsicHeight();
}

我很困惑,尤其是我是 Java 菜鸟。我如何通过编辑函数或更改这行代码来使此代码工作:

private int[] theBitmapIds=theBitmapIds( );

Drawable d = getResources().getDrawable(theBitmapIds[index]);

请有人帮助我!

最佳答案

您可以使用 AssetManager直接加载 Assets 及其路径。

您可以通过调用context.getAssets()获取它的实例。

通过它的 open() 方法,您将能够获得该 Assets 的 InputStream

然后可以使用BitmapFactory.decodeStream()将其转换为Bitmap

关于java - 如何以编程方式在android中的数组中添加可绘制的所有图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54644320/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com