建设公司网站应有哪些功能,郑州权威发布,校园网站开发设计报告,同步网站内容怎么做Android深色模式适配
我们需要再用户设置时候#xff0c;记录下来#xff0c;用户的设置#xff0c;等app再次启动时候#xff0c;获取之前设置#xff0c;重新设置 public static void setThemeMode() {int themeModeType SpUtils.getThemeModeType();if (themeModeTyp…Android深色模式适配
我们需要再用户设置时候记录下来用户的设置等app再次启动时候获取之前设置重新设置 public static void setThemeMode() {int themeModeType SpUtils.getThemeModeType();if (themeModeType 1) {//1浅色AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);} else if (themeModeType 2) {// 2深色AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);} else {//跟随系统AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);}}
1、设置单个Activity /*** 设置单个Activity 深色、浅色、跟随系统** param appCompatDelegate Activity AppCompatDelegate* param themeModeType 0跟随系统 1浅色 2深色*/public static void setThemeModeByActivity(AppCompatDelegate appCompatDelegate, int themeModeType) {if (appCompatDelegate ! null) {switch (themeModeType) {case 0:appCompatDelegate.setLocalNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);break;case 1:appCompatDelegate.setLocalNightMode(AppCompatDelegate.MODE_NIGHT_NO);break;case 2:appCompatDelegate.setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES);break;}}}
2、获取当前Activity是否开启深色 /*** 通过Activity Resources 获取当前是否开启深色模式** param object* return*/public static boolean nightModeByUiResources(Object object) {if (object ! null) {if (object instanceof Activity) {int currentNightMode ((Activity) object).getResources().getConfiguration().uiMode Configuration.UI_MODE_NIGHT_MASK;return currentNightMode Configuration.UI_MODE_NIGHT_YES;} else if (object instanceof androidx.fragment.app.Fragment) {int currentNightMode ((Fragment) object).getResources().getConfiguration().uiMode Configuration.UI_MODE_NIGHT_MASK;return currentNightMode Configuration.UI_MODE_NIGHT_YES;} else if (object instanceof android.app.Fragment) {int currentNightMode ((android.app.Fragment) object).getResources().getConfiguration().uiMode Configuration.UI_MODE_NIGHT_MASK;return currentNightMode Configuration.UI_MODE_NIGHT_YES;}}return false;}
3、webView设置 /*** 设置webView 深色或者浅色模式** param activity* param webSetting*/public static void setWebViewNight(Activity activity, WebSettings webSetting) {if (activity null || webSetting null) {return;}setWebViewNight(webSetting, nightModeByUiResources(activity));}/*** 设置webView 暗黑模式** param webSetting* param nightMode true:深色 false浅色*/public static void setWebViewNight(WebSettings webSetting, boolean nightMode) {boolean featureSupported false;try {featureSupported WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK);} catch (AbstractMethodError e) {e.printStackTrace();}if (featureSupported) {if (nightMode) {//启用 webview 的强制黑暗模式这意味着 webview 的内容将始终以黑暗主题呈现WebSettingsCompat.setForceDark(webSetting, WebSettingsCompat.FORCE_DARK_ON);} else {//禁用 webview 的强制暗模式这意味着 webview 的内容将按原样呈现WebSettingsCompat.setForceDark(webSetting, WebSettingsCompat.FORCE_DARK_OFF);}}}
但是h5页面需要做特别判断才能拿到webView深浅模式
media (prefers-color-scheme: dark) {这里是样式代码}
4、深色浅色切换时候重启app /*** 浅色和深色模式切换杀死进程重新打开app** param activity*/public static void restartApp(Activity activity) {Intent intent activity.getPackageManager().getLaunchIntentForPackage(activity.getPackageName());if (intent ! null) {intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);activity.startActivity(intent);android.os.Process.killProcess(android.os.Process.myPid());}}