Android 如何使用drawable从drawable文件夹获取位图数组形式的所有图像?
我使用下面的代码从drawable文件夹中手动指定每个名称,从而获得9个(bird1到bird9)图像 如何使用数组或将R.drawable.bird1替换为变量(,因为下面的语句只接受实际值))来获取数组中的所有9个图像Android 如何使用drawable从drawable文件夹获取位图数组形式的所有图像?,android,Android,我使用下面的代码从drawable文件夹中手动指定每个名称,从而获得9个(bird1到bird9)图像 如何使用数组或将R.drawable.bird1替换为变量(,因为下面的语句只接受实际值))来获取数组中的所有9个图像 Drawable myDrawable = ResourcesCompat.getDrawable(getApplicationContext().getResources(), R.drawable.bird1, null); bitmap1 = ((Bit
Drawable myDrawable = ResourcesCompat.getDrawable(getApplicationContext().getResources(), R.drawable.bird1, null);
bitmap1 = ((BitmapDrawable) myDrawable).getBitmap();
myDrawable = ResourcesCompat.getDrawable(getApplicationContext().getResources(), R.drawable.bird2, null);
bitmap2 = ((BitmapDrawable) myDrawable).getBitmap();
您可以尝试使用循环获取可绘制id:
for(int=1; i<=9 ; i++)
{
getResources().getIdentifier("bird"+i,"drawable",getPackageName());
}
for(int=1;i我让它像这样工作。我相信有人可以做得更好……但这很有效
注意事项:
1) 记住用真实的包名替换“com.example”
2) 将“numberOfBirdsBitmaps=3”替换为您拥有的数量
3) “derp”图像视图仅用于我的测试目的
public class MainActivity extends AppCompatActivity {
int numberOfBirdsBitmaps = 3;
ArrayList<Bitmap> birdBitmapArray = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView derp1 = (ImageView) findViewById(R.id.imageView);
ImageView derp2 = (ImageView) findViewById(R.id.imageView2);
ImageView derp3 = (ImageView) findViewById(R.id.imageView3);
for (int i = 0; i<numberOfBirdsBitmaps; i++) {
String temporaryString = "bird" + ((Integer) (i+1)).toString();
int temporaryIdentifier = getResources().getIdentifier(temporaryString, "drawable","com.example");
Drawable temporaryDrawable = ResourcesCompat.getDrawable(getApplicationContext().getResources(), temporaryIdentifier, null);
Bitmap temporaryBitmap = ((BitmapDrawable) temporaryDrawable).getBitmap();
birdBitmapArray.add(temporaryBitmap);
}
derp1.setImageBitmap(birdBitmapArray.get(0));
derp2.setImageBitmap(birdBitmapArray.get(1));
derp3.setImageBitmap(birdBitmapArray.get(2));
}
}
public类MainActivity扩展了AppCompatActivity{
int numberOfBirdsBitmaps=3;
ArrayList birdBitmapArray=新的ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView derp1=(ImageView)findViewById(R.id.ImageView);
ImageView derp2=(ImageView)findViewById(R.id.imageView2);
ImageView derp3=(ImageView)findViewById(R.id.imageView3);
对于(int i=0;我用调用“bird”+#
在循环中获取id。它只接受实际值,不接受变量。你是什么意思?请在你的帖子中的额外代码块中显示你尝试的代码。如果答案的海报得到了273
分,那就好了。你提供的链接是贬值的代码。天哪……如果它有效,请使用它。十年后你可以这么想mething new.而且我不相信我所想的是不推荐的。你应该更具体地说明什么是不推荐的。记住用你真正的包名替换“com.example”。
否。使用getPackageName()
,正如你在另一个答案中看到的那样。