跳转至

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& 需要重绘的无效区域,入参只读引用 -