设置主题,夜间模式,按钮点击事件主题由白色变黑色
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设置主题,夜间模式,按钮点击事件主题由白色变黑色相关的知识,希望对你有一定的参考价值。
下面是错误的代码:主题不会更改
原因:从桌面打开的Activity 会自动打开一个任务栈
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <!--toolbar小汉堡样式--> <item name="drawerArrowStyle">@style/DrawerArrowStyle</item> <item name="android:windowBackground">@android:color/white</item> </style> <style name="AppTheme.Black"> <item name="android:windowBackground">@android:color/black</item> </style> <!--小汉堡颜色为白色--> <style name="DrawerArrowStyle" parent="@style/Widget.AppCompat.DrawerArrowToggle"> <item name="color">@android:color/white</item> </style>
下面代码如果取消动画的话,点击完会先执行切换页面动画,再执行设置主题;用户体验不好
private static int mTheme = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// 设置主题,必须在 super.onCreate 之前执行
if (mTheme!=-1){
setTheme(mTheme);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn_default).setOnClickListener(this);
findViewById(R.id.btn_black).setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_default:
mTheme = R.style.AppTheme;
break;
case R.id.btn_black:
mTheme = R.style.AppTheme_Black;
break;
}
Intent intent = new Intent(this,MainActivity.class);
startActivity(intent);
// 设置转场动画,不设置的话 切换界面 会执行动画
overridePendingTransition(0,0);
finish();
overridePendingTransition(0,0);//退出时候的动画
}
以上是关于设置主题,夜间模式,按钮点击事件主题由白色变黑色的主要内容,如果未能解决你的问题,请参考以下文章