第一步 首先Android 必须是Q 就是10.0才能支持暗黑模式

第二步 设置Android webView暗黑模式 WebViewFeature必须引入这个包

implementation 'androidx.webkit:webkit:1.3.0'
if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) {if(DarkModeUtils.isDarkMode(BaseApplication.getInstace().getApplication())){WebSettingsCompat.setForceDark(webSettings, WebSettingsCompat.FORCE_DARK_ON);}else{WebSettingsCompat.setForceDark(webSettings, WebSettingsCompat.FORCE_DARK_OFF);}}

DarkModeUtils这个就是自己定义的切换暗黑模式保存的状态呢  我也贴下代码

public class DarkModeUtils {public static final String KEY_CURRENT_MODEL = "night_mode_state_sp";private static int getNightModel(Context context) {SharedPreferences sp = context.getSharedPreferences(KEY_CURRENT_MODEL, Context.MODE_PRIVATE);return sp.getInt(KEY_CURRENT_MODEL, AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);}public static void setNightModel(Context context, int nightMode) {SharedPreferences sp = context.getSharedPreferences(KEY_CURRENT_MODEL, Context.MODE_PRIVATE);sp.edit().putInt(KEY_CURRENT_MODEL, nightMode).apply();}/*** ths method should be called in Application onCreate method** @param application application*/public static void init(Application application) {int nightMode = getNightModel(application);AppCompatDelegate.setDefaultNightMode(nightMode);}/*** 应用夜间模式*/public static void applyNightMode(Context context) {AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);setNightModel(context, AppCompatDelegate.MODE_NIGHT_YES);}/*** 应用日间模式*/public static void applyDayMode(Context context) {AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);setNightModel(context, AppCompatDelegate.MODE_NIGHT_NO);}/*** 跟随系统主题时需要动态切换*/public static void applySystemMode(Context context) {AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);setNightModel(context, AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);}/*** 判断App当前是否处于暗黑模式状态** @param context 上下文* @return 返回*/public static boolean isDarkMode(Context context) {int nightMode = getNightModel(context);if (nightMode == AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) {int applicationUiMode = context.getResources().getConfiguration().uiMode;int systemMode = applicationUiMode & Configuration.UI_MODE_NIGHT_MASK;return systemMode == Configuration.UI_MODE_NIGHT_YES;} else {return nightMode == AppCompatDelegate.MODE_NIGHT_YES;}}

然后还要设置 webView背景

webview.setBackgroundColor(ContextCompat.getColor(this,R.color.white));

颜色必须要有两份 一个是默认的颜色 另一个是night模式的 如下图

night在res文件下创建一个 values-night->colors.xml 就可以了

如果不知道H5同事那边配置的是不是对的  我们可以在本地的assets的文件下创建一个html 测试下 没问题 在等H5同事那边是配好,下边看下html的代码 其实也很简单

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>页面适应黑暗模式</title>
</head>
<style type="text/css">.back {background: white; color:  #555;text-align: center}@media (prefers-color-scheme: dark) {.back {background:  #333; color: white;}.models {border:solid 1px #00ff00}
}@media (prefers-color-scheme: light) {.back {background: white; color:  #555;}.models {border:solid 1px #2b85e4}
}
</style>
<body class="back">
<div class="models"><h1>测试文字</h1></div>
</body>
</html>

然后在加载本地的html

webview.loadUrl("file:///android_asset/test.html");//测试黑暗模式

看下效果

效果看起来完美

后边我会在更新下 app适配暗黑模式  希望能帮到各位 少走弯路

Android webView适配H5暗黑模式相关推荐

  1. android webview 自适应屏幕宽度,Android应用开发Android Webview适配屏幕宽度

    本文将带你了解Android应用开发Android Webview适配屏幕宽度,希望本文对大家学Android有所帮助. " Android Webview适配屏幕宽度. 网上有很多解决方案 ...

  2. Android WebView 支持H5图片上传input type=file

    2019独角兽企业重金招聘Python工程师标准>>> Android WebView 缓存处理 Android WebView 支持H5图片上传<input type=&qu ...

  3. android webview中h5调用 拍照/相册 通用支持代码

    android webview中h5调用 拍照/相册 通用支持代码. 在webview的   WebChromeClient 中,重写 // For Android >= 5.0 @Overri ...

  4. 京东 App适配 iOS 暗黑模式业务实践

    以下文章来源于京东零售技术,作者平台研发姚琦 什么是暗黑模式? iOS 13 苹果推出了暗黑模式,暗黑模式在夜间可以更好的保护视力,也可以节省 App 电量消耗.但是 Apple 提供的暗黑模式只支持 ...

  5. iOS13适配之暗黑模式(Dark Mode)

    如果是老项目,改动太多,不想适配暗黑模式的话,有个偷懒的方法.或者还没适配完又不想给用户看,可以先暂时全局关闭暗黑模式:在 Info.plist 文件中,添加 key 为 User Interface ...

  6. Android WebView嵌入H5之file头像上传文件,适配所有版本

    最近公司需要开发新的项目,为了节省时间成本,要求整体嵌入H5界面.对,没看错是整体嵌入,心中一万只草泥马奔腾,没办法大佬就是大佬,还是的照做. 今天来说说h5上传头像的问题吧.网上有很多的解决方案,开 ...

  7. Android - WebView接入H5客服照片/视频上传

    webView加载H5,主要是解决上传图片和视频的问题. 1)Activity定义一些常量变量 private static final int REQUEST_CODE_PERMISSION_CAM ...

  8. android 本地html传递参数,Android WebView适配html加载本地文件并上传

    写在前面 自从做Android APP产品以来,版本更迭一版接着一版,为新的业务需求一步也未曾停歇.工作开始进入一种机械化的快节奏:接触新知识,新技术领域一般都是通过网上找资料,快速入门,遇到问题解决 ...

  9. Android webview支持H5页面通过js实现文件上传、图片上传

    一.问题场景: 项目中遇到通过网页上传文件的需求,IOS直接是支持的,安卓端却没反应,有些机型甚至闪退.其实是Android的webview默认是不支持<input type="fil ...

最新文章

  1. 免费学习AI公开课:打卡、冲击排行榜,还有福利领取
  2. CondLaneNet:基于条件卷积的自顶向下车道检测框架
  3. C#调用浏览器的原理及实现浅析
  4. Metasploit技巧命令支持tips
  5. 黑马vue---8-10、v-cloak、v-text、v-html、v-bind、v-on的基本使用
  6. 结果集耗尽时,检查是否关闭结果集时常用sql
  7. 第一次接触 SharpHsql(纯C#开源数据库引擎)
  8. 鸿蒙怎么运行安卓应用,华为:安卓生态应用可在部分鸿蒙设备上运行
  9. unslider制作轮播图
  10. 推荐几个机器学习算法及应用领域相关的中国大牛:
  11. mysql 修复表 阿里云_MySql数据表修复方法-阿里云开发者社区
  12. AUTOSAR从入门到精通100讲(十二)-V2X通信安全技术要求标准
  13. java char i=2+#039;2#039;;_P039 二维数组的字符按列存放到字符串中 ★★
  14. java四舍五入自己写_java提高篇-----详解java的四舍五入与保留位
  15. ArcMAP中如何将16位保存的卫星底图,转变为8位表示
  16. python UI/API 环境配置
  17. International Journal of Rock Mechanics and Mining Sciences (Vol 124-12月期最新研究译文)
  18. 【转】 Android xml中 @和?区别,style和attr小结
  19. 使用kon-boot绕过win10或其他版本密码
  20. 紧急疏散(python)

热门文章

  1. mysql中数据如何备份_mysql数据库如何进行备份和恢复
  2. 使用Modbuspoll控制下位机的一点经验
  3. Java工具:使用POI读取和写入Excel
  4. hbase shell写错退格
  5. 苦七群问答整理210730—现在的微信搜索,真的很强很方便。
  6. VMware ESXI 6 开启VT-x硬件虚拟化技术
  7. 万事俱备,只欠价格? — 华为 MateBook 13 长测
  8. 云原生 SQL 数据库 CockroachDB 2.0 发布:性能极大提升
  9. docsify学习笔记
  10. 树莓派摄像头安装和使用