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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中怎么实现动态设置背景图片的功能,我在网上搜到的只能设置到当前的页面,并不能实现设置到全部的主要内容,如果未能解决你的问题,请参考以下文章

怎样在android GridView实现动态加载图片啊?

安卓中如何添加显示gif动态图片?

android设置linearlayout布局的背景颜色,怎么动态改变背景颜色?

Android动态的设置5图或1视频,并播放或浏览图片

如何动态设置activity背景透明度

利用videoView创建播放器,实现展示视频列表和搜索sd卡功能 以及android6.0的动态授权等功能