android怎么从drawable目录下动态获取图片

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android怎么从drawable目录下动态获取图片相关的知识,希望对你有一定的参考价值。

Bitmap bitmap = BitmapFactory.decodeFile(文件路径, null/*如果想加速,可以用设定options先取得宽高*/);

如果是ImageView控件,可以很容易地set上去。我们就这么做的。

如果非要用button,下面的可以参考(没实际试过):
Drawable drawable = Drawable.createFromPath(文件路径);
Button实例.setBackgroundDrawable(drawable)。

语法上可能不对,但是你应该能明白。
参考技术A setImageResource(R.drawable.chaxun);
setBackgroundResource(R.drawable.chaxun);
参考技术B setImageResource(R.drawable.chaxun);
setBackgroundResource(R.drawable.chaxun);本回答被提问者和网友采纳

android中怎么实现动态设置背景图片的功能,我在网上搜到的只能设置到当前的页面,并不能实现设置到全部

不能设置到全部的页面中,而且网上搜到的设置到当前的页面,当我关闭重新运行,它又会自动跳回原始的背景图片。谁能指教一下?

当关闭重新运行,它又会自动跳回原始的背景图片。

在开发过程中,由于使用模拟器测试了程序,在首次运行后会将res文件夹下的图片资源文件(如drawable-hdpi、drawable-ldpi和drawable-mdpi)拷贝到bin文件夹下。在替换资源图片后,eclipse并不清楚是否有图片改变,所以会使用原来bin下的res文件夹中的资源文件进行打包,而图片用的还是第一次eclipse所拷贝进去的文件,所以当运行程序后会发现替换资源图片在程序中没起作用。

解决办法:每次运行前,清理项目


动态设置背景图片代码

private int i=0;//全局变量定义,初始化

//list数组接收到从文件中读取到的数据

List<String> list=readTxt.getDierguanResource();

//changeBack这个函数用来动态设置背景图片

public void changeBack(int background)

main=(LinearLayout) findViewById(R.id.shizi);

String a=list.get(background);

//获取到的背景图片名as (图片存到res/drawable文件下)

 String as = a.split(" ")[1];

//动态获取图片getResources().getIdentifier(as,"drawable",getPackageName())

int resID=getResources().getIdentifier(as,"drawable",getPackageName()); 

//设置页面背景setBackgroundResource()

main.setBackgroundResource(resID);

if(i>=0&&i<list.size())


changeBack(i);

参考技术A 有些Activity都没有加载,没有实例化当然会NullPointerException了。
反过来,将图片写成一个配置里面,比如bgimage = "/sdcard/app/images/gb.png"
这样,每个Activity都会去读取这个配置,就可以设置这张图片到背景。

SharePreference类可以读写配置信息。追问

不是很理解你说的,能说具体点吗?谢谢

追答        // 将背景图片文件路径信息写入配置:
        SharedPreferences sp = getSharedPreferences("bg_setting", 0);
        sp.edit().putString("background", "/sdcard/myapp/images/flower.png");
        sp.edit().commit();
        // 读取配置
        String bg_img = sp.getString("background", "/sdcard/myapp/images/bg_default.png");
        // 设置背景
        setBackground(bg_img);

本回答被提问者和网友采纳
参考技术B 数据库 OK?追问

你是说把图片存到数据库里?我是把图片放在数组中,当我将当前浏览的图片设置为所有界面的背景图片时,运行报空指针异常!不知道为什么?

以上是关于android怎么从drawable目录下动态获取图片的主要内容,如果未能解决你的问题,请参考以下文章

如何从 android 包中的资源 id 获取 Drawable 对象?

android下怎么获取res资源文件夹的路径

一起Talk Android吧(第三百九十三回:从drawable中获取Bitmap)

Android,想获取这个对象里面的Drawable应该使用那个方法?

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

android中怎么实现动态设置背景图片的功能,我在网上搜到的只能设置到当前的页面,并不能实现设置到全部