android获取drawable里面的图片的id和名字的方法
1、ImageView这个组件可以直接设置Bitmap和Drawable来展示图片,方法分别是setImageBitmap()和setImageDrawable()
2、根据(1)我们需要使用Drawable,Drawable可以由drawable目录里的图片资源生成,在这之前你需要理解一个概念,我们向drawable目录放入一张图片是需要命名的,比如图片名为sun.png,系统会帮助我们自动生成这个图片的id,如果想在java代码中引用这个图片就需要使用这个id,使用方式:R.drawable.sun。
3、使用系统方法将图片转换为Drawable。
Drawable drawable = getResources().getDrawable(R.drawable.sun);
imageView.setImageDrawable(drawable);
这样就可以将图片显示到ImageView上。
这里面使用的getResources()方法获取的Resources对象可以帮助我们获取很多资源文件,这个方法可以直接在Activity里使用,在其他地方需要使用Context对象调用。此外,Resources的getDrawable方法已被标记为过时,系统推荐使用两个参数的方法。getDrawable(int id, Theme theme),我们不需要设置Theme可以给null。
4、题外话
1)现在图片资源已经很少放在drawable目录里,而是放在mipmap目录,引用方式R.mipmap.xxx
2)你的问题涉及到id和名字,名字是你把图片放到目录时自己起的,命名要符合规范。而id则是由系统自动帮你生成,且是固定格式:R.drawable.xxx
直接用一个Integer的数组存放你的图片ID,写一个Adapter继承BaseAdapter并实现其中的方法,就可以了。给你写个例子吧。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.grid_2);
GridView g = (GridView) findViewById(R.id.myGrid);
g.setAdapter(new ImageAdapter(this));
}
public class ImageAdapter extends BaseAdapter {
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(45, 45));
imageView.setAdjustViewBounds(false);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
private Context mContext;
private Integer[] mThumbIds = {
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
};
}
ImageView imageView =(ImageView) findViewById(R.id.imageView1);
Drawable currentDrawable =imageView.getDrawable();
XML中:
@drawable/imageView1