在 OpenHarmony(ArkUI / eTS)里做图表的“深色模式”,本质上有 三种思路,从简单到完整依次是:
如果你的图表库或组件支持跟随系统主题,只需要:
import { Configuration } from '@ohos.app.ability.Configuration';
let colorMode = AppStorage.Get('colorMode');
或使用:
this.context.getApplicationContext().getConfiguration().colorMode
let isDark = colorMode === 1; // 1 表示深色
chart.setOption({
backgroundColor: isDark ? '#1A1A1A' : '#FFFFFF',
textStyle: {
color: isDark ? '#FFFFFF' : '#000000'
}
});
✅ 适合:ECharts、自绘 Canvas 图表
OpenHarmony 原生支持 color mode 资源目录:
resources/
├─ base/
│ └─ element/
│ └─ color.json
├─ dark/
│ └─ element/
│ └─ color.json
{
"chart_bg": "#FFFFFF",
"chart_text": "#000000"
}
{
"chart_bg": "#1A1A1A",
"chart_text": "#FFFFFF"
}
.chart {
background-color: $r('app.color.chart_bg');
color: $r('app.color.chart_text');
}
✅ 系统切换深色模式,图表自动变化
✅ 官方推荐方案
如果是 自己画的图表:
const themes = {
light: {
axis: '#999',
line: '#007DFF',
bg: '#FFFFFF'
},
dark: {
axis: '#666',
line: '#409EFF',
bg: '#121212'
}
}
let theme = isDark ? themes.dark : themes.light;
canvas.fillStyle = theme.bg;
| 图表方案 | 深色模式支持 |
|---|---|
| ECharts(OH 移植版) | ✅ setOption 切换 |
| MPChart(OH) | ✅ 手动改颜色 |
| Canvas 自绘 | ✅ 完全可控 |
| 官方图表组件 | ⚠️ 部分需自定义 |
resources/dark如果你能告诉我:
我可以直接给你一份可运行示例代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。