• Android 日夜间切换Demo


    这是其中一种实现模式,也是比较麻烦的一种,首先写布局,不多说上代码

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.day_night_demo2.MainActivity">
    
        <Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onClick="onClick"
    android:text="?attr/textContent"/>
        <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="100dp"
    android:text="Hello World!"
    android:textColor="?attr/textColorValue" />
    
        <TextView
    android:textColor="?attr/textColorValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:text="Hello World!" />
    
        <TextView
    android:textColor="?attr/textColorValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:text="Hello World!" />
    </LinearLayout>
     -------------------------------------------------------------------------------------------------------
    

    res资源文件夹下values文件夹下创建attrs.xml资源文件

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <attr name="textColorValue" format="color"></attr>
        <attr name="textContent" format="string"></attr>
    </resources>

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    colors.xml

    <color name="background">#252a2e</color>
    <color name="unablebtn">#dcdcdc</color>
    <color name="dark_bg">#505050</color>
    <color name="light">#ECECEC</color>
    <color name="white">#FFFFFF</color>
    <color name="black">#000000</color>
    <color name="green">#05D992</color>
    <color name="zise">#E5004F</color>
    <color name="dark_bg1">#414141</color>
    <color name="pink">#FF5877</color>
    <color name="yellow">#FFFF00</color>

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Strings.xml

    <string name="changge_to_night">切换成夜间模式</string>
    <string name="changge_to_day">切换成日间模式</string>

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    styles.xml

    <!-- Base application theme. 白天的模式 -->
    <style name="day_theme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowBackground">@color/white</item>
    
        <!--日间模式对应的字体颜色 和日间模式对应的文本内容-->
    <item name="textColorValue">@color/black</item>
        <item name="textContent">@string/changge_to_night</item>
    
    </style>
    
    <!-- Base application theme. 夜晚的模式 -->
    <style name="night_theme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/dark_bg</item>
        <item name="colorPrimaryDark">@color/dark_bg</item>
        <item name="colorAccent">@color/dark_bg</item>
        <item name="android:windowBackground">@color/dark_bg</item>
    
        <!--夜间模式对应的字体颜色 和夜间模式对应的文本内容-->
    <item name="textColorValue">@color/white</item>
        <item name="textContent">@string/changge_to_day</item>
    </style>
    

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    在res文件夹下创建anim文件夹用来存放动画,为了使模式切换更自然,使用补间动画

    sliding_in.xml

    <?xml version="1.0" encoding="utf-8"?>
    <alphaxmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromAlpha="0.0"
    android:toAlpha="1.0"></alpha>

    sliding_out.xml

    <?xml version="1.0" encoding="utf-8"?>
    <alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:toAlpha="0.0"
    android:fromAlpha="1.0"></alpha>

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    下面就是具体实现代码了

    package com.example.day_night_demo2;
    
    import android.app.Activity;
    import android.content.Intent;
    
    /**
     * Created by lenovo on 2017/9/5.
     */
    public class ThemeUtil {
        //我当前的主题
    private static int theme = 0;
    
        //日间模式主题
    private static final int DAY_THEME = 0;
    
        //夜间模式主题
    private static final int NIGHT_THEME = 1;
    
        public static void onActivityCreatedSetTheme(Activity activity) {
            switch (theme) {
                case DAY_THEME:
                    activity.setTheme(R.style.day_theme);
                    break;
                case NIGHT_THEME:
                    activity.setTheme(R.style.night_theme);
                    break;
            }
        }
    
        //点击按钮改变对应的主题
    public static void ChangeCurrentTheme(Activity activity) {
            //改变当前主题的theme变量
    switch (theme) {
                case DAY_THEME:
                    theme = NIGHT_THEME;
                    break;
                case NIGHT_THEME:
                    theme = DAY_THEME;
                    break;
            }
    
            //重启这个activity
    activity.finish();
            activity.overridePendingTransition(R.anim.sliding_in,R.anim.sliding_out);
            activity.startActivity(new Intent(activity,activity.getClass()));
        }
    }
    

    =========================================================================================

    package com.example.day_night_demo2;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            //设置对应的主题 ,在ui创建好之后设置主题无效,所以要放到setContentView()方法前面setTheme()
    ThemeUtil.onActivityCreatedSetTheme(this);
            setContentView(R.layout.activity_main);
    
        }
        public void onClick(View v){
            ThemeUtil.ChangeCurrentTheme(this);
        }
    }
    

  • 相关阅读:
    201275判断joomla首页的方法
    phpcms添加视频模块(未完)
    Joomla学习总结
    Joomla资源
    2012725 K2组件学习
    Apache Commons configuration使用入门
    linux学习(7)压缩与解压缩
    linux学习(6)redhat安装xwindow环境
    linux学习(5)iptables防火墙设置
    java实现的一个分页算法
  • 原文地址:https://www.cnblogs.com/powersen/p/7524584.html
Copyright © 2020-2023  润新知