android怎么从drawable目录下动态获取图片?? 我现在从数据库中获取到了图片的名称,比如“t11.jpg”,怎么根据这个名称在drawable目录下获取这张图片并加载到button的背景上??求指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你看看Assets资源读取吧,当然仅仅加载给Button,直接使用setBackground的方法,使用类似R.drawable.image_name就行了 这个要用到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楼好像误解我的意思了,我的意思不是拿数据库里获取到的数据和drawable目录下的图片进行对比,在目录下都有图片,我现在想要的是要存很多图片在数据库里,然后让程序动态获取这个图片文件,然后显示在我界面button的背景上? 这个恐怕不太好处理,drawable下的所有图片都在R.java中有对应的id,要获取该图片设置成背景,必须获取该图片的id,不知道楼主要做什么样的效果如果图片显示没有规律的话,直接用个int型的数组存放图片,然后从数组中去图片,设置背景如果有规律,像同样一个图片,显示不同的状态,在drawable下写一个xml文件,当获取焦点、单击时会变换不同的图片。 Bitmap bitmap = BitmapFactory.decodeFile(文件路径, null/*如果想加速,可以用设定options先取得宽高*/);如果是ImageView控件,可以很容易地set上去。我们就这么做的。如果非要用button,下面的可以参考(没实际试过):Drawable drawable = Drawable.createFromPath(文件路径);Button实例.setBackgroundDrawable(drawable)。语法上可能不对,但是你应该能明白。 首先确定下,你存在数据库的图片名肯定在drawable下有相应的图片吧?如果是,请往下看: 换种思路,你不往数据库里存文件名而是存一个int 的 R.drawable.t11(对应t11,jpg),加载的时候直接用取得的数据即可 两种想法:查看框架,使用和Google一样的算法直接通过名字生成ID 或者通过相对路径访问Drawable目录,获取图像. http://gundumw100.iteye.com/blog/1135242 在<button>里加一句 android:background=“@drawable/图片名字” int id_up = context.getResources().getIdentifier(pic_name, "drawable", "com.Test");android的按名存取图片 16楼正解虽不中亦不远已JAVA再差,都有一些类,是用来getResouce的楼上一堆不懂的在吹水 记录以下public static int getDrawable(Context context, String name) { Assert.assertNotNull(context); Assert.assertNotNull(name); return context.getResources().getIdentifier(name, "drawable", context.getPackageName()); } 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; }} Fix // 得到存储常量的类 Class<?> clazz = Class.forName(pkg + ".R." + type); 感觉要用到反射的哇,从文件名,反射出图片id直,然后使用这个id来画图。 今天正好遇到这个问题,查了一下资料,这种办法可行:控件.setImageResource(getResources().getIdentifier("文件名_" + "索引号", "drawable", "com.xxxx.xxxxx")); 学习了控件.setImageResource(getResources().getIdentifier("文件名_" + "索引号", "drawable", "com.xxxx.xxxxx")); android中System.out.println()的极其诡异异常!请高人解释一下 4.0系统 adb push 替换根目录文件 如何调试程序 关于基站定位 google的接口不免费之后,你们都是怎么解决的? 暴风影音界面如何设计的? 关于对接口的解析调用 怎么上传文件到php服务器? android强行开机启动的原理 第三方jar包和系统android.jar包冲突问题! 请问做camera视频录制,要怎么实现呢? 关于Document doc=Jsoup.connect(url).get 高手指点下ListView怎么添加一个自定义标题(header)
下面代码可以将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中,然后进行判断即可。
Drawable drawable = Drawable.createFromPath(文件路径);
Button实例.setBackgroundDrawable(drawable)。语法上可能不对,但是你应该能明白。
或者通过相对路径访问Drawable目录,获取图像.
"drawable", "com.Test");android的按名存取图片
虽不中亦不远已
JAVA再差,都有一些类,是用来getResouce的
楼上一堆不懂的在吹水
public static int getDrawable(Context context, String name) { Assert.assertNotNull(context); Assert.assertNotNull(name); return context.getResources().getIdentifier(name, "drawable", context.getPackageName()); }
// 去掉后缀名,比如 .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;
}
}
// 得到存储常量的类
Class<?> clazz = Class.forName(pkg + ".R." + type);
控件.setImageResource(getResources().getIdentifier("文件名_" + "索引号", "drawable", "com.xxxx.xxxxx"));