样式与主题系统¶
SOUI的样式与主题系统提供了完整的UI外观定制能力,通过资源化的方式统一管理颜色、尺寸、字体、字符串等各种UI元素,支持主题切换和样式复用。
核心概念¶
样式与主题系统基于以下核心概念构建: - 资源化管理:所有UI元素都作为资源统一管理 - 主题切换:支持运行时动态切换不同主题 - 样式复用:定义一次,多处使用 - 层次化组织:支持基础样式和扩展样式的层级结构
文档导航¶
📁 样式资源定义¶
- 颜色资源 - 定义和管理UI颜色方案
- 尺寸资源 - 统一管理间距、大小等尺寸值
- 字体样式 - 定义文本字体、大小、粗细等样式
- 字符串资源 - 集中管理所有文本内容
- 模板系统 - 创建可复用的UI组件模板
📁 主题系统¶
📁 资源组织¶
快速开始¶
1. 创建基础资源文件¶
在项目的values
目录下创建基础资源文件:
project/
├── uires/
│ ├── values/
│ │ ├── colors.xml # 颜色定义
│ │ ├── dimensions.xml # 尺寸定义
│ │ ├── fonts.xml # 字体样式
│ │ ├── strings.xml # 字符串资源
│ │ └── styles.xml # 样式定义
│ └── themes/
│ ├── light.xml # 浅色主题
│ └── dark.xml # 深色主题
2. 注册资源文件¶
在uires.idx
中注册所有资源:
<resources>
<values>
<file name="colors" path="values\colors.xml"/>
<file name="dimensions" path="values\dimensions.xml"/>
<file name="fonts" path="values\fonts.xml"/>
<file name="strings" path="values\strings.xml"/>
<file name="styles" path="values\styles.xml"/>
</values>
<themes>
<file name="light" path="themes\light.xml"/>
<file name="dark" path="themes\dark.xml"/>
</themes>
</resources>
3. 在应用中使用¶
<!-- 使用颜色资源 -->
<window background="@color/background_primary">
<text text="@string/app_title" font="@font/title" color="@color/text_primary"/>
<button text="@string/btn_ok" width="@dimen/button_width" height="@dimen/button_height"/>
</window>
设计原则¶
- 语义化命名:使用描述性的名称而非具体值
- 模块化组织:按功能模块分组相关资源
- 主题一致性:确保同一主题内风格统一
- 性能优化:避免过度复杂的样式层次
学习路径¶
初学者¶
进阶开发者¶
高级用户¶
相关资源¶
常见问题¶
Q: 如何选择合适的资源粒度? A: 建议按功能模块组织,保持单个文件不超过200个定义。
Q: 主题切换会影响性能吗? A: 合理使用缓存机制,主题切换对性能影响很小。
Q: 可以自定义资源类型吗? A: SOUI支持通过扩展机制添加自定义资源类型。