我现在从数据库中获取到了图片的名称,比如“t11.jpg”,怎么根据这个名称在drawable目录下获取这张图片并加载到button的背景上??求指教

解决方案 »

  1.   

    你看看Assets资源读取吧,当然仅仅加载给Button,直接使用setBackground的方法,使用类似R.drawable.image_name就行了
      

  2.   

    这个要用到java的反射技术
    下面代码可以将drawable文件夹下的所以图片名称获取到:
    Field[] fields = R.drawable.class.getDeclaredFields();
            for(Field field:fields){
             if(!"icon".equals(field.getName())){
             sb.append(field.getName() + "\t");
             }
            }
            mTextView.setText(sb.toString());楼主将获取的所以名称存放在list中,然后进行判断即可。
      

  3.   

    3楼好像误解我的意思了,我的意思不是拿数据库里获取到的数据和drawable目录下的图片进行对比,在目录下都有图片,我现在想要的是要存很多图片在数据库里,然后让程序动态获取这个图片文件,然后显示在我界面button的背景上?
      

  4.   

    这个恐怕不太好处理,drawable下的所有图片都在R.java中有对应的id,要获取该图片设置成背景,必须获取该图片的id,不知道楼主要做什么样的效果如果图片显示没有规律的话,直接用个int型的数组存放图片,然后从数组中去图片,设置背景如果有规律,像同样一个图片,显示不同的状态,在drawable下写一个xml文件,当获取焦点、单击时会变换不同的图片。
      

  5.   

    Bitmap bitmap = BitmapFactory.decodeFile(文件路径, null/*如果想加速,可以用设定options先取得宽高*/);如果是ImageView控件,可以很容易地set上去。我们就这么做的。如果非要用button,下面的可以参考(没实际试过):
    Drawable drawable = Drawable.createFromPath(文件路径);
    Button实例.setBackgroundDrawable(drawable)。语法上可能不对,但是你应该能明白。
      

  6.   

    首先确定下,你存在数据库的图片名肯定在drawable下有相应的图片吧?如果是,请往下看:    换种思路,你不往数据库里存文件名而是存一个int 的 R.drawable.t11(对应t11,jpg),加载的时候直接用取得的数据即可
      

  7.   

    两种想法:查看框架,使用和Google一样的算法直接通过名字生成ID 
    或者通过相对路径访问Drawable目录,获取图像.
      

  8.   

    http://gundumw100.iteye.com/blog/1135242
      

  9.   

    在<button>里加一句 android:background=“@drawable/图片名字”
      

  10.   

    int id_up = context.getResources().getIdentifier(pic_name,
    "drawable", "com.Test");android的按名存取图片
      

  11.   

    16楼正解
    虽不中亦不远已
    JAVA再差,都有一些类,是用来getResouce的
    楼上一堆不懂的在吹水
      

  12.   

    记录以下
    public static int getDrawable(Context context, String name) {     Assert.assertNotNull(context);     Assert.assertNotNull(name);      return context.getResources().getIdentifier(name,             "drawable", context.getPackageName()); } 
      

  13.   

    getResource().getIdentifier 本质上,还是java的反射。只不过把反射得到类名,反射得到常量,及反射得到常量的值,3个步骤合并在一起了伪码int getIdentifier(String name, String type, String pkg) {
    // 去掉后缀名,比如 .png .jpeg
    int index = name.indexOf('.');
    if (index > -1)
    name = name.substring(0, index);
    try {
    // 得到存储常量的类
    Class<?> clazz = Class.forName(pkg + "." + type);
    // 反射得到常量
    Field f = clazz.getDeclaredField(name);
    // 反射得到常量的值
    int id = f.getInt(null);
    return id;
    } catch (Exception e) {
    return 0;
    }
    }
      

  14.   

    Fix
            // 得到存储常量的类
             Class<?> clazz = Class.forName(pkg + ".R." + type);
      

  15.   

    感觉要用到反射的哇,从文件名,反射出图片id直,然后使用这个id来画图。
      

  16.   

    今天正好遇到这个问题,查了一下资料,这种办法可行:控件.setImageResource(getResources().getIdentifier("文件名_" + "索引号", "drawable", "com.xxxx.xxxxx"));
      

  17.   

     学习了
    控件.setImageResource(getResources().getIdentifier("文件名_" + "索引号", "drawable", "com.xxxx.xxxxx"));