Android中白天模式与夜间模式的切换

前言
安卓是自带模式的,我们在styles.xml便可以设置标题栏显示的颜色(白天和夜间模式当然也就可以通过切换主题来实现)
设置切换之间的动画
在res下面新建anim文件夹然后在里面创建切换动画

in.xml

  
    
    


out.xml


    


在styles里面设置要切换的主题

    

    
    


在Preferences.class
定义一个传值的类

ublic class Preferences {

    private static final String shared_name="guide";

    private static SharedPreferences sp;
    public static String getString(Context context, String key, String defaultValues) {
       sp = context.getSharedPreferences(shared_name, context.MODE_PRIVATE);
        return sp.getString(key, defaultValues);
    }

    public static void setString(Context context, String key, String Values) {

       sp = context.getSharedPreferences(shared_name, context.MODE_PRIVATE);

        sp.edit().putString(key, Values).commit();

    }

}


在UIUtils里面

public class UiUtils {
//获取主题

    public static int getAppTheme(Context ctx) {
//        给他的默认值是1默认是白天模式

        String value = Preferences.getString(ctx, "activity_theme", "1");

        switch (Integer.valueOf(value)) {

            case 1:
//默认系统自带的主题
                return R.style.AppTheme;//白色主题

            case 2:

                return R.style.AppTheme_Black;

            default:

                return R.style.AppTheme;//默认白色

        }

    }
//    通过点击时给activity_theme不同的值

    public static void switchAppTheme( Context ctx){

        String value = Preferences.getString(ctx, "activity_theme", "1");

        switch (Integer.valueOf(value)){

            case 1:

                Preferences.setString(ctx, "activity_theme", "2");

                break;

            case 2:

                Preferences.setString(ctx, "activity_theme", "1");

                break;

            default:

                Preferences.setString(ctx, "activity_theme", "1");

                break;

        }

    }
}


在MainActivity里面

public class MainActivity extends AppCompatActivity {
    private int theme = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //切换主题必须放在onCreate()之前

        if (savedInstanceState == null) {
//                如果么有
            theme = UiUtils.getAppTheme(MainActivity.this);
        }
        else {
           theme = savedInstanceState.getInt("theme");
        }
//        可以设置主题的 方法 在oncreate之前调用
        setTheme(theme);

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }
//点击按钮时实现白天和黑夜的切换并实现效果
    public  void  Buttons (View view){
        UiUtils.switchAppTheme(MainActivity.this);
       load();
    }

//    切换之间的动画
    public void load() {

        Intent intent = getIntent();

        overridePendingTransition(R.anim.in, R.anim.out);//进入动画

        finish();

        overridePendingTransition(R.anim.in, R.anim.out);
        startActivity(intent);

    }
    }


这样就简单实现了点击button按钮时对白天和黑夜的切换

你可能感兴趣的:(大数据)