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对象

参数:resgetResource()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)方法,设置矩阵值

参数:valuefloat[]数组,(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。找不到

android怎么获取res——Drawable的图片数量

如何用getIdentifier获取android.R的ID,如android.R.drawable.ic_launcher

Android ImageView 获取图片信息后进行比较