夜间模式切换——setTheme()

昨晚上躺下用UC上网,哎呦,夜间模式的切换效果不错哦。好吧,今天工作有点小空闲就尝试下。记录下来。。。。

  1. setTheme()这个是最常见的主题切换方法了。不过这个方法只有在onCreate()方法中首先执行才会生效。
  2. 额。。。不知道怎么说了上关键代码和项目源码吧
    //首先在attrs.xml中申明你所需要的属性
    <attr name="text1_color" format="color" />
    <attr name="text2_color" format="color" />
    <attr name="button_text_color" format="color" />
    <attr name="button_bg" format="color" />
    <attr name="layout_bg" format="color" />
    <attr name="anim_layout_bg" format="color" />
   //在style.xml中添加白天和晚上两种主题ps:开始做的是蓝色和红色两种嘻嘻
  <!--蓝色主题-->
    <style name="BlueTheme" parent="AppTheme"> <item name="text1_color">@android:color/black</item> <item name="text2_color">@android:color/black</item> <item name="button_text_color">@android:color/black</item> <item name="button_bg">@android:color/darker_gray</item> <item name="layout_bg">@android:color/white</item> </style>

    <!--红色主题-->
    <style name="RedTheme" parent="AppTheme"> <item name="text1_color">@android:color/white</item> <item name="text2_color">@android:color/white</item> <item name="button_text_color">@android:color/darker_gray</item> <item name="button_bg">#44A3BB</item> <item name="layout_bg">@android:color/black</item> </style>

   <!--动画蓝色主题-->
    <style name="AnimBlueTheme" parent="android:Theme.Translucent.NoTitleBar"> <item name="anim_layout_bg">@android:color/white</item> </style>


    <!--动画红色主题-->
    <style name="AnimRedTheme" parent="android:Theme.Translucent.NoTitleBar"> <item name="anim_layout_bg">@android:color/black</item> </style>
剩下的就是在activity中用咯。对了还有设置屏幕的亮暗方法
 private void setBrightness(final ContentResolver resolver, int brightness) {
        final Uri uri = android.provider.Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS);
        android.provider.Settings.System.putInt(resolver, Settings.System.SCREEN_BRIGHTNESS, (brightness));
        new Handler().post(new Runnable() {
            @Override
            public void run() {
                resolver.notifyChange(uri, null);
            }
        });
    }
在屏幕亮暗被设置成自动时候,上面方法不管用哦。。。上传项目源码去了

PS:DEMO中,我是关闭这个activity然后在重新打开它,为了让他重新执行一遍onCreate()方法。。。。。。额~~~~其实有这么一个方法不错



recreate();
记住哦

项目地址咯
http://download.csdn.net/detail/david_dyk/9434650

你可能感兴趣的:(UC)