夜间模式UI调整

This commit is contained in:
fengjignqi
2026-05-17 15:09:25 +08:00
parent b420d1b5e6
commit 8311026790
38 changed files with 413 additions and 72 deletions

View File

@@ -0,0 +1,95 @@
package com.ckkj.water.mine;
import android.os.Bundle;
import android.view.View;
import com.ckkj.water.R;
import com.ckkj.water.base.BaseActivity;
import com.ckkj.water.databinding.AppThemeChangeLayoutBinding;
import com.ckkj.water.mine.mvp.MineContract;
import com.ckkj.water.mine.mvp.MineImpl;
import com.ckkj.water.mine.mvp.MinePresenter;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.utils.manager.ThemeManager;
import com.gyf.immersionbar.ImmersionBar;
/**
* @author fengxiaoyang
* @date 2026/5/17
* @description TODO: 切换主题
*/
public class AppThemActivity extends BaseActivity<AppThemeChangeLayoutBinding, MinePresenter>
implements MineContract.MineView {
@Override
public void initData(Bundle savedInstanceState) {
super.initData(savedInstanceState);
ImmersionBar.with(this)
.statusBarColor(R.color.transparent) // 设置状态栏颜色
.statusBarDarkFont(true) // 设置状态栏字体为黑色
.titleBar(viewBinding.rlTitle)
.init();
viewBinding.includedTitle.tvTitle.setText(R.string.register_title);
initListener();
int currentTheme = ThemeManager.getCurrentTheme(mContext);
if(currentTheme == ThemeManager.MODE_LIGHT){
viewBinding.checkNight.setChecked(false);
viewBinding.checkLight.setChecked(true);
}else{
viewBinding.checkNight.setChecked(true);
viewBinding.checkLight.setChecked(false);
}
}
private void initListener() {
setClick(viewBinding.includedTitle.imgBack);
setClick(viewBinding.linearLight);
setClick(viewBinding.linearNight);
}
private void setClick(View view) {
view.setOnClickListener(this::onClick);
}
public void onClick(View v){
switch (v.getId()){
case R.id.linear_light:
switchTheme(ThemeManager.MODE_LIGHT);
viewBinding.checkNight.setChecked(false);
viewBinding.checkLight.setChecked(true);
break;
case R.id.linear_night:
switchTheme(ThemeManager.MODE_DARK);
viewBinding.checkNight.setChecked(true);
viewBinding.checkLight.setChecked(false);
break;
}
}
private void switchTheme(int themeMode) {
ThemeManager.setCurrentTheme(this, themeMode);
ThemeManager.applyTheme(themeMode);
recreate(); // 需要重新创建Activity使主题生效
}
@Override
public MinePresenter createPresenter() {
return new MinePresenter(new MineImpl());
}
@Override
public int getLayoutResId(Bundle savedInstanceState) {
return 0;
}
@Override
public void showError(String message) {
}
@Override
public void logOut(BaseBean bean) {
}
}

View File

@@ -16,6 +16,7 @@ import com.ckkj.water.mine.mvp.MineContract;
import com.ckkj.water.mine.mvp.MineImpl;
import com.ckkj.water.mine.mvp.MinePresenter;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.utils.manager.ThemeManager;
import com.ckkj.water.utils.show.ToastUtil;
import com.gyf.immersionbar.ImmersionBar;
import com.lxj.xpopup.XPopup;
@@ -33,8 +34,8 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
@Override
public void initData(Bundle state) {
ImmersionBar.with(mContext)
.statusBarColor(R.color.white)
.statusBarDarkFont(true)
.statusBarColor(R.color.mainBackgroundColor)
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext))
.titleBar(viewBinding.rlTitle)
.init();
viewBinding.includedTitle.imgBack.setVisibility(INVISIBLE);
@@ -46,6 +47,7 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
setClick(viewBinding.imgAvatar);
setClick(viewBinding.linearLanguage);
setClick(viewBinding.linearPsdManage);
setClick(viewBinding.linearTheme);
}
private void setClick(View view) {
@@ -58,6 +60,10 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
goTo(mContext, MineInfomationActivity.class,null);
break;
case R.id.linear_theme:
goTo(mContext, AppThemActivity.class,null);
break;
case R.id.linear_language:
new XPopup.Builder(mContext).asBottomList(
"选择语言",