在Android开发中如何实现皮肤的切换?
在google和百度上搜到一些资料,但是本人想要的是皮肤的切换,而他们实现的是主题的切换,有的还是在不同项目之间实现的这个功能,本人想要在一个项目中实现,请懂这方面知识的高人帮帮忙吧!

解决方案 »

  1.   

    我理解的换肤,就是比如说开始按钮背景图片什么的都是黑的,我换成蓝色的或者其他颜色的但是你提到一个2个概念: 皮肤的切换  主题的切换
    所以我在想你是不是不是单纯的换换颜色,换换图片,还要把布局换掉,比如按钮的位置之类的
    不管是换颜色换图片,还是换布局,只要控件的ID不变,数量不变,直接写一个XML用setContentView换就行了,或者在View的级别去设置他,或者直接在ondraw里面去写都可以
    但是如果你多了控件,或者少了控件,这个就麻烦了,代码都要改了,我想你说的肯定不是这个 
      

  2.   


    我就是想:只是换背景的颜色或者说是图片。如果像你说的那样,直接写xml文件,那么每换一个背景记得重写其中的所有的控件,要是这样的话,如果想要某个背景在所有的(不止一个)activity中都得重写所有的控件,先不说这样的思想能不能实现我想要的效果,那这样不是太麻烦了吗?每段代码得写好几遍,这好像不符合编程的思想吧?嘿嘿嘿
      

  3.   


        也可以直接写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开头那些东西
      

  4.   

    你需要的是不是为一个项目中的所有的Activity更换背景?如果是的话我上传了一个这样的例子,你可以下载下来看看。
      

  5.   

    你需要的是不是为一个项目中的所有的Activity更换背景?如果是的话我上传了一个这样的例子,你可以下载下来看看。