关于android动态切换app主题颜色方案

来源:互联网 发布:物业管理收费软件app 编辑:程序博客网 时间:2024/04/29 22:56
1. 在attr.xml中 声明所需要的动态改变的颜色
<declare-styleable name="PagerSlidingTabStrip">
        <attr name="pstsIndicatorColor" format="color" />
        <attr name="pstsUnderlineColor" format="color" />
        <attr name="pstsDividerColor" format="color" />
        <attr name="pstsIndicatorHeight" format="dimension" />
        <attr name="pstsUnderlineHeight" format="dimension" />
        <attr name="pstsDividerPadding" format="dimension" />
        <attr name="pstsTabPaddingLeftRight" format="dimension" />
        <attr name="pstsScrollOffset" format="dimension" />
        <attr name="pstsTabBackground" format="reference" />
        <attr name="pstsShouldExpand" format="boolean" />
        <attr name="pstsTextAllCaps" format="boolean" />
    </declare-styleable>

2.在 stylesx.xml中 定义主题,给相应主题设置所需颜色值
<!--黑夜主题-->
    <style name="BaseAppThemeNight" parent="Theme.AppCompat.NoActionBar">
        <item name="colorPrimary">@color/bottom_navigation</item>
        <item name="colorPrimaryDark">@color/bottom_navigation</item>
        <item name="android:textColor">@color/black</item>
        <item name="android:background">@android:color/transparent</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="bottom_navigation">@color/bottom_navigation</item>
        <item name="common_entire">@color/common_entire</item>
        <item name="common_background">@color/common_background</item>
        <item name="stress_selected">@color/stress_selected</item>
        <item name="icon_button_common">@color/icon_button_common</item>
        <item name="icon_button_clicked">@color/icon_button_clicked</item>
        <item name="content_background">@color/content_background</item>
        <item name="icon_button_clicked2">@color/icon_button_clicked2</item>
        <item name="info__click_avatar_strike">@color/info__click_avatar_strike</item>
        <item name="icon_button_normal">@color/icon_button_normal</item>
        <item name="important_fonts_title">@color/important_fonts_title</item>
        <item name="guide_fonts">@color/guide_fonts</item>
        <item name="secondary_fonts">@color/secondary_fonts</item>
        <item name="special_fonts">@color/special_fonts</item>
    </style>

3.layout.xml中引用色值
android:textColor="?attr/important_fonts_title"
android:background="?attr/common_entire"

4.在java代码中引用色值
TypedArray array = mContext.getTheme().obtainStyledAttributes(new int[] {
                R.attr.important_fonts_title, //文字选中色
                R.attr.guide_fonts, //文字未选中色
                R.attr.stress_selected, //背景选中色
                R.attr.common_background, //背景未选中色
        });
        int important_fonts_title = array.getColor(0, R.color.white);
        int guide_fonts = array.getColor(1, R.color.white);
        int stress_selected = array.getColor(2, R.color.white);

        int common_background = array.getColor(3, R.color.white);

5.最后记得设置你需要的Activity设置动态主题

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         setTheme(R.style.BaseAppThemeNight);

}

  或者直接设置application的主题



0 0
原创粉丝点击