zoukankan      html  css  js  c++  java
  • 毕业设计心得与整理-APP-主题切换

    1.定义主体颜色:

    在style自定义了三个属性:

     <item name="textLight">@android:color/white</item>
     <item name="appbg">@color/colorPrimaryDarkNight</item>
     <item name="textNight">@color/gray</item>
    
    

    他们并不是android自由的属性,他们是我自定义的属性。他们的定义写在attrs.xml里面

    <resources>
        <attr name="textLight" format="reference" />
        <attr name="textNight" format="reference" />
        <attr name="appBg" format="reference" />
    </resources>
    

    在这里定义过后,就可以在xml中直接使用,只需要引用进去就好
    eg. android:background="?attr/appbg"

    这样背景色就自动转换成了你设置的这个属性值。

    2.设置主题颜色

    activity 提供了一个方法 setTheme(int id) ,但是要注意这个要在 setContentView(int id) 之前调用。就是说我们要在视图显示之前就把颜色切换掉。也就是需要重启当前的activity。
    除此之外,之前渲染过的视图也需要进行处理,也就是处理那些 “过时” 的 activity。我这里用的方法是清空我们的 back stack。

    final Intent themeintent = getIntent();
                    themeintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                    startActivity(themeintent);
    

    FLAG_ACTIVITY_NEW_TASK 是为要启动的activity新建一个任务堆栈。
    FLAG_ACTIVITY_CLEAR_TASK 任何放置该activity的已存在的task里面 的activity都被清空。也就是清空过时的activity。

  • 相关阅读:
    [HDU1561]The more, The Better
    [洛谷P1352][codevs1380]没有上司的舞会
    【51Nod1773】A国的贸易 解题报告
    快速沃尔什变换
    【SDOI2015】序列统计 解题报告
    【CF438E】小朋友和二叉树 解题报告
    多项式Ⅰ
    洛谷 P5105 不强制在线的动态快速排序
    【BZOJ4916】神犇和蒟蒻 解题报告
    【BZOJ3309】DZY Loves Math 解题报告
  • 原文地址:https://www.cnblogs.com/ruyan-yang/p/9101493.html
Copyright © 2011-2022 走看看