android获取drawable里面的图片的id和名字的方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android获取drawable里面的图片的id和名字的方法相关的知识,希望对你有一定的参考价值。
我知道我的drawable里面有很多图片,有什么方法直接获取它们的id和名字呢?还有我想把这些图片用适配器放到格子为imageview的gridview里面,因此想问下用什么格式把图片映射到Imageview里面去呢?例如textview就是用String,那imageview呢?用它们的Id吗?
你好,看样子你可能是刚接触android不久,我先就你想实现的问题给你解答。你问题的本质是要在ImageView上展示图片,你需要理解以下几点: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 参考技术A
这些图片早已被映射到R文件中了,每一张都对应了一个标识符(Id)来表示它;
可以使用R.drawable. 来拿到这个id;
映射这个词不对,那叫给这个imageView设置背景;
可以用imagview的对象调用setBackgroundResource(传入上面某一图片的id)
举个例子就明白了
ImageView imageView = new ImageView(this);imageView.setBackgroundResource(R.drawable.ic_launcher);//设置背景 参考技术B
直接用一个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,
;
本回答被提问者采纳 参考技术C 可以将他们的id放进一个int数组里面、、、日入image1这个图片引用id可以R.drawable.image1到时候直接以资源id的形式直接set进imageView就行了 参考技术D 代码中:
ImageView imageView =(ImageView) findViewById(R.id.imageView1);
Drawable currentDrawable =imageView.getDrawable();
XML中:
@drawable/imageView1
[android] 图片的缩放
界面布局,线性布局,竖直排列,两个ImageView
获取到两个ImageView对象
调用BitmapFactory.decodeResource(res,id)方法,获取Bitmap对象
参数:res是getResource(),id是资源id比如:R.drawable.xxx
调用ImageView对象的setImageViewBitmap(),参数:Bitmap对象
获取可编辑的Bitmap对象
调用Bitmap对象的createBitmap(width,height,config)方法,获得可编辑的Bitmap对象
参数:宽 高 配置,这些都是原来的宽高,Bitmap对象的getWidth(),getHeight(),getConfig()
获取Canvas对象,通过new Canvas(bitmap),参数:Bitmap对象
调用Canvas对象的drawBitmap(bitmap,matrix,paint)方法,
参数:Bitmap对象模板,matrix是矩阵,Paint是画笔
获取Paint对象,通过new出来
调用Paint对象的setColor()方法,设置画笔颜色,参数:Color.BLACK
获取Matrix对象,通过new出来
调用Matrix对象的setValue(value)方法,设置矩阵值
参数:value是float[]数组,(0.5f,0,0,0,1,0,0,0,1)
这个矩阵大部分人搞不清楚了,因此有另一个api
调用Matrix对象的setScale(sx,sy),设置比例,参数:一半就是0.5f 0.5f
调用第二个ImageView对象的setImageBitmap()方法,展示出来
以上是关于android获取drawable里面的图片的id和名字的方法的主要内容,如果未能解决你的问题,请参考以下文章
android 获取当前壁纸的Drawable对象或者Bitmap。如何获取这张图片的ID或者名称。
android如何获取drawable中图片的path?返回string路径
android项目,往drawable文件夹里面导入图片,main.xml里能找到图片,但是在java文件中R.drawable。找不到
如何用getIdentifier获取android.R的ID,如android.R.drawable.ic_launcher