2010-07-28 42 views
14

我怎么能作出这样的处理我的一些图像阵列,使得这样的?:Android:我如何制作可绘制阵列?

ImageView.setImageResource(image[1]); 

我希望我解释好,我可以用它...

+1

看看这个[Android的存储R.drawable 。 XML数组中的ID] [1],它在array.xml中使用类型化数组。 [1]:http://stackoverflow.com/questions/6945678/android-storing-r-drawable-ids-in-xml-array – hayi 2013-04-06 13:12:53

+0

@HaYi谢谢,你是非常真棒。 – 2016-05-04 11:48:16

回答

50

要做到这一点,你不” t想要一个Drawable数组,只是一个资源标识符数组,因为'setImageResource'需要这些标识符。这个怎么样:

int[] myImageList = new int[]{R.drawable.thingOne, R.drawable.thingTwo}; 
// later... 
myImageView.setImageResource(myImageList[i]); 

或者一个可调整大小的版本:

ArrayList<Integer> myImageList = new ArrayList<>(); 
myImageList.add(R.drawable.thingOne); 
// later... 
myImageView.setImageResource(myImageList.get(i)); 
+0

非常感谢! =) – JoeyCK 2010-07-28 17:05:53

+0

谢谢老师:) – TheOnlyAnil 2015-05-19 10:31:26

+0

你会如何实现添加图像到一个int [],但让它搜索所有文件并添加而不是明确命名每个文件添加? – 2016-09-29 02:41:50

9

你必须让你的照片的所有绘制的ID以下方法首先:

int android.content.res.Resources.getIdentifier(String name, String defType, String defPackage) 

对于例如,您可以读取循环中的所有可绘制ID:

int drawableId = resources.getIdentifier("picture01", "drawable", "pkg.of.your.java.files"); 
              picture02... 
              picture03... 

..和然后将它们保存到位图数组:

private Bitmap[] images; 
images[i] = BitmapFactory.decodeResource(resources, drawableId); 

现在你可以使用你的图像作为阵列。

1

对于@Bevor的,你可以使用getResources()方法而不是android.content.res.Resources这样的:

ArrayList<Integer> imgArr = new ArrayList<Integer>(); 

    for(int i=0;i<5;i++){ 

     imgArr.add(getResources().getIdentifier("picture"+i, "drawable", "pkg.of.your.java.files")); 
    } 

用法:

imageView.setImageResource((int)imgArr.get(3)); 
0
String[] arrDrawerItems = getResources().getStringArray(R.array.arrDrawerItems); // Your string title array 

// You use below array to create your custom model like 
TypedArray arrDrawerIcons = getResources().obtainTypedArray(R.array.arrDrawerIcons); 

for(int i = 0; i < arrDrawerItems.length; i++) { 
    drawerItemDataList.add(new DrawerItemModel(arrDrawerItems[i], arrDrawerIcons.getResourceId(i, -1), i == 0 ? true : false)); 
} 
drawerItemAdapter = new DrawerItemAdapter(this, drawerItemDataList); 
mDrawerList.setAdapter(drawerItemAdapter);