首页 > 系统 > Android > 正文

Android开发实现切换主题及换肤功能示例

2019-12-12 00:14:54
字体:
来源:转载
供稿:网友

本文实例讲述了Android开发实现切换主题及换肤功能。分享给大家供大家参考,具体如下:

废话不说先看效果:

创建ColorTheme类用于主题更换:

public class ColorTheme {  AppCompatActivity ap;  public ColorTheme(AppCompatActivity _ap){ap=_ap;}  public void updateTheme(int _data){    String data=Integer.toString(_data);    FileOutputStream out=null;    BufferedWriter writer=null;    try{      out=ap.openFileOutput("data",Context.MODE_PRIVATE);      writer=new BufferedWriter(new OutputStreamWriter(out));      writer.write(data);    }catch (IOException e){      e.printStackTrace();    }finally {      try {        if(writer!=null){          writer.close();        }      }catch (IOException e){        e.printStackTrace();      }    }  }  public void loadTheme(){    FileInputStream in=null;    BufferedReader reader= null;    StringBuilder content=new StringBuilder();    try{      in=ap.openFileInput("data");      reader=new BufferedReader(new InputStreamReader(in));      String line="";      while((line=reader.readLine())!=null){        content.append(line);      }      ap.setTheme(Integer.parseInt(content.toString()));    }catch (IOException e){      e.printStackTrace();    }finally {      if(reader!=null){        try{          reader.close();        }catch (IOException e){          e.printStackTrace();        }      }    }  }}

在oncreate中调用:

protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  final ColorTheme newTheme = new ColorTheme(this);  newTheme.loadTheme();  setContentView(R.layout.activity_main);

重点:

要现在res/value/style中设计主题的样式:

这里是我设的的四种样式:

<?xml version="1.0"?>  <resources>  <!-- Base application theme. -->  -<style parent="Theme.AppCompat.Light.NoActionBar" name="AppTheme">  <!-- Customize your theme here. -->  <item name="colorPrimary">@color/colorPrimary</item>  <item name="colorPrimaryDark">@color/colorPrimaryDark</item>  <item name="colorAccent">@color/colorAccent</item>  <item name="colorButtonNormal">@color/colorAccent</item></style>  -<style parent="Theme.AppCompat.Light.NoActionBar" name="Blue">  <!-- Customize your theme here. -->  <item name="colorPrimary">@color/blue</item>  <item name="colorPrimaryDark">@color/blue</item>  <item name="colorAccent">@color/blue</item>  <item name="colorButtonNormal">@color/blue</item></style>  -<style parent="Theme.AppCompat.Light.NoActionBar" name="Pink">  <!-- Customize your theme here. -->  <item name="colorPrimary">@color/pink</item>  <item name="colorPrimaryDark">@color/pink</item>  <item name="colorAccent">@color/pink</item>  <item name="colorButtonNormal">@color/pink</item></style>  -<style parent="Theme.AppCompat.Light.NoActionBar" name="Turquoise">  <!-- Customize your theme here. -->  <item name="colorPrimary">@color/turquoise</item>  <item name="colorPrimaryDark">@color/turquoise</item>  <item name="colorAccent">@color/turquoise</item>  <item name="colorButtonNormal">@color/turquoise</item></style></resources>

别忘了在color里定义的颜色:

<?xml version="1.0" encoding="UTF-8"?>  <resources>  <color name="colorText">#ffffffff</color>  <color name="hintText">#bfffffff</color>  <color name="colorPrimary">#de4037</color>  <color name="colorPrimaryDark">#de4037</color>  <color name="colorAccent">#de4037</color>  <!--注册界面提示红色-->  <color name="hintRed">#de4037</color>  <color name="blue">#1e50a2</color>  <color name="pink">#fa7299</color>  <color name="turquoise">#008577</color></resources>

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android控件用法总结》、《Android开发入门与进阶教程》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android数据库操作技巧总结》及《Android资源操作技巧汇总

希望本文所述对大家Android程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表