ui_icosahedron_view
ui_icosahedron_view 模块提供二十面体视图组件,支持3D二十面体的渲染与旋转交互。
Class Summary
OHOS::UIIcosahedronView
二十面体3D旋转视图控件,支持对二十面体各面设置图像并执行3D旋转操作
- 构造:无
-
成员函数:
接口名称 功能简述 GetViewType 获取视图类型 SetSideLength 设置二十面体的边长 Add 向二十面体添加单面对应的图像视图 RefreshIcosahedron 刷新二十面体位置,重置物理位置 RotatePlanes 从起始位置对二十面体执行3D旋转 Rotate 从当前位置对二十面体执行3D旋转 SetDefaultImage 设置默认图像,面数不足时使用 SetLuminanceFactor 设置亮度补偿因子 OnDraw 绘制二十面体视图 -
使用包含头文件:
#include "components/ui_icosahedron_view.h" - 声明头文件:
middleware/services/gui/uikit/proprietary/include/components/ui_icosahedron_view.h - 公有运算符:无
- 继承关系:UIAbstractScroll
- 嵌套类型:无
- 模板形参:无
Functions
OHOS::UIIcosahedronView
GetViewType
UIViewType GetViewType() const override
功能说明
- 核心用途:获取当前视图的类型标识
- 设计目的:为视图类型判断提供统一接口,支持运行时类型识别
- 使用场景:视图类型判断、类型转换前的安全检查
返回值
- 返回类型:
UIViewType
返回视图类型枚举值
| 返回值 | 触发场景 |
|---|---|
| UI_ICOSAHEDRON_VIEW | 当前视图为二十面体视图 |
SetSideLength
void SetSideLength(uint16_t sideLen)
功能说明
- 核心用途:设置二十面体的边长
- 设计目的:控制二十面体的几何尺寸,边长决定整体显示大小
- 使用场景:初始化二十面体尺寸、动态调整显示大小
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| sideLen | uint16_t | 二十面体的边长,单位为像素 | 0 ~ 65535 |
Add
void Add(UIView* view) override
功能说明
- 核心用途:向二十面体的某个面添加对应的图像视图
- 设计目的:为二十面体的每个三角面设置独立的图像内容
- 使用场景:设置二十面体各面的图像显示,仅支持 UIImageView 类型
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| view | UIView* | 单面对应的图像视图指针,仅支持 UIImageView 类型 | 非 nullptr |
RefreshIcosahedron
void RefreshIcosahedron()
功能说明
- 核心用途:刷新二十面体的位置状态,重置物理位置
- 设计目的:在边长等参数变更后重新计算二十面体各面坐标
- 使用场景:调用 SetSideLength 后需刷新显示;旋转异常后重置位置
RotatePlanes
bool RotatePlanes(int16_t angle, const Vector3<float>& pivotStart, const Vector3<float>& pivotEnd)
功能说明
- 核心用途:从起始位置对二十面体执行3D旋转操作
- 设计目的:提供基于起始位置的绝对旋转能力,每次旋转从初始位置开始
- 使用场景:动画关键帧旋转、设定固定角度的展示旋转
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| angle | int16_t | 旋转角度,单位为度 | -32768 ~ 32767 |
| pivotStart | const Vector3 |
旋转起始轴坐标,入参只读引用 | - |
| pivotEnd | const Vector3 |
旋转终止轴坐标,入参只读引用 | - |
返回值
- 返回类型:
bool
返回旋转操作是否成功执行
| 返回值 | 触发场景 |
|---|---|
| true | 旋转操作执行成功 |
| false | 旋转操作执行失败 |
Rotate
bool Rotate(int16_t angle, const Vector3<float>& pivotStart, const Vector3<float>& pivotEnd)
功能说明
- 核心用途:从当前位置对二十面体执行3D旋转操作
- 设计目的:提供基于当前位置的增量旋转能力,旋转在当前姿态基础上叠加
- 使用场景:手势拖拽旋转、惯性动画旋转、连续增量旋转
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| angle | int16_t | 旋转角度,单位为度 | -32768 ~ 32767 |
| pivotStart | const Vector3 |
旋转起始轴坐标,入参只读引用 | - |
| pivotEnd | const Vector3 |
旋转终止轴坐标,入参只读引用 | - |
返回值
- 返回类型:
bool
返回旋转操作是否成功执行
| 返回值 | 触发场景 |
|---|---|
| true | 旋转操作执行成功 |
| false | 旋转操作执行失败 |
SetDefaultImage
void SetDefaultImage(ImageInfo* src)
功能说明
- 核心用途:设置二十面体的默认图像,当面数不足20面时使用该默认图像填充
- 设计目的:确保二十面体各面均有图像内容显示,避免面数不足时出现空白
- 使用场景:初始化时设置默认图像、面数不足20面的补位显示
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| src | ImageInfo* | 默认图像的 ImageInfo 结构体指针,图像尺寸需与屏幕尺寸匹配 | 非 nullptr,图像尺寸与屏幕尺寸一致 |
SetLuminanceFactor
void SetLuminanceFactor(float value)
功能说明
- 核心用途:设置亮度补偿因子,调整二十面体各面的亮度
- 设计目的:通过倍率因子补偿3D旋转带来的光照亮度变化
- 使用场景:3D旋转后亮度不均匀时调整、特定视觉效果需求
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| value | float | 亮度补偿因子,基于原始基础补偿的倍数 | 浮点数 |
OnDraw
void OnDraw(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea) override
功能说明
- 核心用途:绘制二十面体视图到指定图形缓冲区
- 设计目的:框架层绘制回调,将二十面体的3D渲染结果输出到显示缓冲区
- 使用场景:由 UI 框架在重绘时自动调用,非用户主动调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| gfxDstBuffer | BufferInfo& | 目标图形缓冲区,入参引用,由框架传入 | - |
| invalidatedArea | const Rect& | 需要重绘的无效区域,入参只读引用 | - |