2026-10-21 09:47:35
在 Android 视频聊天应用中实现暗黑模式快速适配,需从资源管理、状态栏适配及版本兼容性三方面入手。以下是具体实现方案及注意事项:
一、资源适配颜色资源
在 res/values-night/colors.xml 中定义暗黑模式专用色值,例如:
<!-- values/colors.xml --><color name="background">#FFFFFF</color><color name="text">#000000</color><!-- values-night/colors.xml --><color name="background">#121212</color><color name="text">#E0E0E0</color>布局文件中通过 @color/background 引用,系统自动切换。
图片资源
将暗黑模式图片放入 mipmap-night 或 drawable-night 目录,同名资源会被自动加载。
在 BaseActivity 中统一处理状态栏颜色:
public class BaseActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); updateStatusBar(); } private void updateStatusBar() { if (isDarkMode()) { getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.status_bar_dark)); } else { getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.status_bar_light)); } } public boolean isDarkMode() { int nightMode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; return nightMode == Configuration.UI_MODE_NIGHT_YES; }}三、暗黑模式切换AndroidX 版本直接调用 AppCompatDelegate.setDefaultNightMode(),系统自动处理界面重建:
// 切换为暗黑模式AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);Support 库版本需手动调用 recreate() 触发界面刷新:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);recreate(); // 强制重建Activity通过以上方案,可实现视频聊天应用在暗黑模式下的高效适配,同时兼容不同支持库版本。建议优先使用 AndroidX 以减少维护成本。