日夜间模式黑白主题切换
来源:互联网 发布:大数据修炼系统起点 编辑:程序博客网 时间:2024/05/17 03:55
在 style中添加黑夜主题
<!--白天主题-->
<stylename="AppTheme"parent="Theme.AppCompat.Light.DarkActionBar">
<itemname="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<!--黑夜主题-->
<style name="AppTheme.Black"parent="Theme.AppCompat">
</style>
2:添加到res目录下anim
activity_out.xml
<?xml version="1.0"encoding="utf-8"?>
<setxmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:duration="0"
android:fromAlpha="1.0"
android:interpolator="@android:anim/decelerate_interpolator"
android:toAlpha="0.0">
</alpha>
</set>
activity_in.xml
<?xml version="1.0"encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:duration="0"
android:fromAlpha="0.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="1.0">
</alpha>
</set>
3:创建Preferences和UiUtils
Preferences
public class Preferences {
private static finalStringshared_name="user_guide";
private staticSharedPreferencessp;
public static String getString(Context context, String key,
String defaultValues) {
SharedPreferences sp = context.getSharedPreferences(shared_name,
context.MODE_PRIVATE);
returnsp.getString(key, defaultValues);
}
public static voidsetString(Context context, String key, String Values) {
SharedPreferences sp = context.getSharedPreferences(shared_name,
context.MODE_PRIVATE);
sp.edit().putString(key, Values).commit();
}
}
UiUtils
public class UiUtils {
//获取主题
public static intgetAppTheme(Context ctx) {
String value = Preferences.getString(ctx,"activity_theme","1");
switch(Integer.valueOf(value)) {
case1:
returnR.style.AppTheme;//白色主题
case2:
returnR.style.AppTheme_Black;
default:
returnR.style.AppTheme;//默认白色
}
}
//切换主题
//当然也可以使用资源ID来进行标记
public static voidswitchAppTheme( Context ctx){
String value = Preferences.getString(ctx,"activity_theme","1");
switch(Integer.valueOf(value)){
case1:
Preferences.setString(ctx,"activity_theme","2");
break;
case2:
Preferences.setString(ctx,"activity_theme","1");
break;
default:
Preferences.setString(ctx,"activity_theme","1");
break;
}
}
}
主Activity
public class MainActivity extends AppCompatActivity {
private inttheme=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
//切换主题必须放在onCreate()之前
if(savedInstanceState ==null) {
theme= UiUtils.getAppTheme(MainActivity.this);
}else{
theme= savedInstanceState.getInt("theme");
}
setTheme(theme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public voidclick(View v) {
UiUtils.switchAppTheme(MainActivity.this);
reload();
}
public voidreload() {
Intent intent = getIntent();
overridePendingTransition(R.anim.activity_in, R.anim.activity_out);//进入动画
finish();
overridePendingTransition(R.anim.activity_in, R.anim.activity_out);
startActivity(intent);
}
}
阅读全文
1 0
- 日夜间模式黑白主题切换
- 日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- Android夜间模式主题切换
- Android 切换日夜间模式
- 日夜间模式的切换
- 轻松切换日夜间模式
- 日夜间模式的切换
- 日夜间模式的切换
- 现实需求巨大_技术尚未成熟_学界与业界思维大碰撞
- Android中开发需要的高效助推的命令总结
- 权限管理工具类
- Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)[Dalston版]
- 网站被CC攻击!2个方法教你如何做好防护
- 日夜间模式黑白主题切换
- (源码阅读)自己动手打造一套属于自己想IOC注解框架
- 碎片化的移动游戏及社交需求
- px em rem区别
- ffmpeg的中文文档
- 报错Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
- 完全卸载oracle11g步骤
- CDN缓存不命中排查
- Java HotSpot虚拟机的内存管理(垃圾收集)