在开发中,会有一个这样的效果实现,为了保护使用者的眼睛,提高应用的使用形,可以设置一下切换白天或者黑夜模式,这里介绍一种很简单的实现方法,它的最终实现效果是这样的
效果图:
不知道这个效果图有没有吸引到你们,现在一起进入到这个画面的学习中。
src-main-res-velues-styles
<resources> <!-- .白天模式的样式 --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> </style> <!-- 夜间模式的样式. --> <style name="AppThemeDark" parent="Theme.AppCompat"></style> </resources>
src-main-res-layout
<Button android:id="@+id/but" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="切换夜间模式" />
src-main-java-创建一个Utils类
package com.example.baitianheiye; import android.content.Context; public class Utils { //获取主题,根据给定的值来判断是夜间还是黑夜 public static int getAppTheme(Context context){ //将theme取出 String value = SharedPreferrenceHelper.getTheme(context); //判断theme转为int类型的值 switch (Integer.valueOf(value)){ case 1: //白天的主题 return R.style.AppTheme; case 2: //夜间的主题 return R.style.AppThemeDark; default: //默认白天 return R.style.AppTheme; } } //更改主题,当为白天时将给定的值改成黑夜,为黑夜反之 public static void switchAppTheme(Context context){ String value = SharedPreferrenceHelper.getTheme(context); switch (Integer.valueOf(value)){ case 1: //当为白天时调用这个方法变成黑夜 SharedPreferrenceHelper.setTheme(context,"2"); break; case 2: //当为黑夜时调用这个方法变成白天 SharedPreferrenceHelper.setTheme(context,"1"); break; default: //默认为白天 SharedPreferrenceHelper.setTheme(context,"1"); break; } } }
src-main-java-创建一个SharedPreferrenceHelper类
package com.example.baitianheiye; import android.content.Context; import android.content.SharedPreferences; public class SharedPreferrenceHelper { //theme(主题) private static final String THEME = "theme"; //更改主题,传入两个参数,一个上下文,一个theme(主题) public static void setTheme(Context context, String theme) { SharedPreferences sharedPreferences = context.getSharedPreferences("theme", Context.MODE_PRIVATE); //将theme(主题)存入SharedPreferences sharedPreferences.edit().putString(THEME, theme).apply(); } //取出主题 public static String getTheme(Context context) { SharedPreferences sharedPreferences = context.getSharedPreferences("theme", Context.MODE_PRIVATE); //取出theme(主题) return sharedPreferences.getString(THEME, "1"); } }
MainActivity中
package com.example.baitianheiye; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private int theme = 0; private Button but; @Override protected void onCreate(Bundle savedInstanceState) { theme = Utils.getAppTheme(this); setTheme(theme); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); if(theme==R.style.AppThemeDark){ but.setText("切换为白天模式"); }else if(theme==R.style.AppTheme){ but.setText("切换为夜间模式"); } } private void initView() { but = (Button) findViewById(R.id.but); but.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.but: Utils.switchAppTheme(this); Intent intent = getIntent(); overridePendingTransition(0, 0);//不设置进入退出动画 intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); finish(); overridePendingTransition(0, 0); startActivity(intent); break; } } }
如此,便可以做出一个白天黑夜相切换的效果,拿走,不谢噢。