android获取drawable里面的图片的id和名字的方法

2024-12-04 15:35:28
推荐回答(5个)
回答1:

你好,看样子你可能是刚接触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

回答2:

这些图片早已被映射到R文件中了,每一张都对应了一个标识符(Id)来表示它;

可以使用R.drawable. 来拿到这个id;

映射这个词不对,那叫给这个imageView设置背景;

可以用imagview的对象调用setBackgroundResource(传入上面某一图片的id)

举个例子就明白了

ImageView imageView = new ImageView(this);
imageView.setBackgroundResource(R.drawable.ic_launcher);//设置背景

回答3:

直接用一个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,

        };

    }


回答4:

可以将他们的id放进一个int数组里面、、、日入image1这个图片引用id可以R.drawable.image1到时候直接以资源id的形式直接set进imageView就行了

回答5:

代码中:

ImageView imageView =(ImageView) findViewById(R.id.imageView1);
Drawable currentDrawable =imageView.getDrawable();
XML中:
@drawable/imageView1