首页 > 代码库 > 设置主题,夜间模式,按钮点击事件主题由白色变黑色
设置主题,夜间模式,按钮点击事件主题由白色变黑色
下面是错误的代码:主题不会更改
原因:从桌面打开的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);//退出时候的动画
}
设置主题,夜间模式,按钮点击事件主题由白色变黑色
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。