在Android开发中如何实现皮肤的切换?
在google和百度上搜到一些资料,但是本人想要的是皮肤的切换,而他们实现的是主题的切换,有的还是在不同项目之间实现的这个功能,本人想要在一个项目中实现,请懂这方面知识的高人帮帮忙吧!
在google和百度上搜到一些资料,但是本人想要的是皮肤的切换,而他们实现的是主题的切换,有的还是在不同项目之间实现的这个功能,本人想要在一个项目中实现,请懂这方面知识的高人帮帮忙吧!
解决方案 »
- 【100分求答案】问个关于notification和activity的小白问题,求指点
- android实现自动获取对方所在的位置
- 柱状图在更新数据时应用会强制关闭
- 在android开发中,socket通信时,android虚拟机端的ip地址是多少?
- 请教sax处理多个xml
- 怎么修改系统的系统时间?就是每次刷机的时候系统的默认时间就是2011.01.01
- ubuntu 12.04 编译 android vlc 的问题
- android项目引用了google-play-service_lib,如何用ant打包
- zxing在哪可以修改扫码窗口的宽度和高度
- 安卓开发使用的语言和java语言是什么关系?
- Android如何进行图片编辑?
- C向JAVA多个字符串传递问题
所以我在想你是不是不是单纯的换换颜色,换换图片,还要把布局换掉,比如按钮的位置之类的
不管是换颜色换图片,还是换布局,只要控件的ID不变,数量不变,直接写一个XML用setContentView换就行了,或者在View的级别去设置他,或者直接在ondraw里面去写都可以
但是如果你多了控件,或者少了控件,这个就麻烦了,代码都要改了,我想你说的肯定不是这个
我就是想:只是换背景的颜色或者说是图片。如果像你说的那样,直接写xml文件,那么每换一个背景记得重写其中的所有的控件,要是这样的话,如果想要某个背景在所有的(不止一个)activity中都得重写所有的控件,先不说这样的思想能不能实现我想要的效果,那这样不是太麻烦了吗?每段代码得写好几遍,这好像不符合编程的思想吧?嘿嘿嘿
也可以直接写XML,也不需要每个代码写几遍啊,你要的只是多写几个XML而已,XML的图片颜色什么的可以换,但是控件ID不变就行了。需要做的只是每次加载新的XML之后重新读取控件ID。
把所有的findViewbyID的步骤封装的到一个函数中——比如我这叫 getID(),然后每次换肤的时候调用 setContentView 和 getID 就行了。
只不过当前的数据需要自己保存,比如1.xml中一个textView显示的东西,换成2.xml之后,你需要把他弄过来。
如果按照你说的那个,换背景的颜色或者图片,不写XML的话,也可以直接读取控件ID换掉相应资源。
比如直接读到需要替换的控件的ID,装一个函数,比如叫swapSkinRes(),然后这个函数里面对相应的资源进行设置。
具体实施的时候,比如有2个图片,black_bg和white_bg,定义一个皮肤名字,就比如white和black,然后如果当前主题是white就加载white_xxx开头那些东西