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

我知道我的drawable里面有很多图片,有什么方法直接获取它们的id和名字呢?还有我想把这些图片用适配器放到格子为imageview的gridview里面,因此想问下用... 我知道我的drawable里面有很多图片,有什么方法直接获取它们的id和名字呢?还有我想把这些图片用适配器放到格子为imageview的gridview里面,因此想问下用什么格式把图片映射到Imageview里面去呢?例如textview就是用String,那imageview呢?用它们的Id吗? 展开
 我来答
Jevons_lee_w
2018-03-01 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:77
采纳率:100%
帮助的人:42.3万
展开全部
你好,看样子你可能是刚接触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
淡水千痕乀
2018-03-01 · TA获得超过360个赞
知道小有建树答主
回答量:141
采纳率:83%
帮助的人:29万
展开全部

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

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

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

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

举个例子就明白了

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yanyuwxf
推荐于2016-05-15 · 超过13用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:30.8万
展开全部

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

        };

    }


本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aolphn
2014-08-06 · TA获得超过176个赞
知道小有建树答主
回答量:218
采纳率:75%
帮助的人:66.7万
展开全部
可以将他们的id放进一个int数组里面、、、日入image1这个图片引用id可以R.drawable.image1到时候直接以资源id的形式直接set进imageView就行了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hao050523
推荐于2016-08-13 · TA获得超过2547个赞
知道小有建树答主
回答量:2366
采纳率:50%
帮助的人:670万
展开全部
代码中:

ImageView imageView =(ImageView) findViewById(R.id.imageView1);
Drawable currentDrawable =imageView.getDrawable();
XML中:
@drawable/imageView1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式