跳转至

ui_analog_clock

ui_analog_clock 模块提供模拟时钟组件,支持表盘绘制与时针/分针/秒针动画显示。

Class Summary

OHOS::UIAnalogClock

提供模拟时钟相关功能,支持设置指针图像/线条、获取指针属性、设置初始时间及工作模式

  • 构造:无
  • 成员函数

    接口名称 功能简述
    GetViewType 获取视图类型
    SetHandImage 设置指针绘制使用的图像
    SetHandLine 设置指针绘制使用的线条参数
    GetHandRotateCenter 获取指定指针的旋转中心
    GetHandPosition 获取指定指针的位置
    GetHandInitAngle 获取指定指针的初始旋转角度
    GetHandCurrentAngle 获取指定指针的当前旋转角度
    SetInitTime24Hour 以24小时制设置初始时间
    SetInitTime12Hour 以12小时制设置初始时间
    OnDraw 绘制模拟时钟
    OnPostDraw 执行绘制后操作
    SetWorkMode 设置工作模式
    GetWorkMode 获取当前工作模式
    UpdateClock 更新时钟时间
  • 使用包含头文件#include "components/ui_analog_clock.h"

  • 声明头文件middleware/services/gui/uikit/ui/interfaces/kits/components/ui_analog_clock.h
  • 公有运算符:无
  • 继承关系:UIAbstractClock
  • 嵌套类型Hand、enum class HandType、enum class DrawType
  • 模板形参:无

OHOS::UIAnalogClock::Hand

定义模拟时钟指针的基本属性

  • 构造:无
  • 成员函数:无
  • 使用包含头文件#include "components/ui_analog_clock.h"
  • 声明头文件middleware/services/gui/uikit/ui/interfaces/kits/components/ui_analog_clock.h
  • 公有运算符:无
  • 继承关系:HeapBase
  • 嵌套类型:无
  • 模板形参:无

Functions

OHOS::UIAnalogClock

GetViewType

UIViewType GetViewType() const override

功能说明

  • 核心用途:获取当前视图的类型标识
  • 返回值为 UI_ANALOG_CLOCK,用于区分其他视图类型
  • 该函数为 const 成员函数,不修改对象状态

返回值

  • 返回类型:UIViewType

返回当前视图类型

返回值 触发场景
UI_ANALOG_CLOCK(11) 当前对象为模拟时钟视图

SetHandImage

void SetHandImage(HandType type, const UIImageView& img, Point position, Point center)

功能说明

  • 核心用途:设置指定类型指针的绘制图像
  • 通过图像方式绘制时钟指针,需同时指定图像起始位置和旋转中心
  • 设置后指针将使用图像进行绘制

入参

名称 参数类型 详细说明 约束取值范围
type HandType 指针类型 HOUR_HAND / MINUTE_HAND / SECOND_HAND
img const UIImageView& 入参只读引用,指针使用的图像 已完成图像资源加载的 UIImageView 对象
position Point 图像起始位置坐标 x: int16_t, y: int16_t
center Point 指针旋转中心坐标 x: int16_t, y: int16_t

SetHandLine

void SetHandLine(HandType type, Point position, Point center, ColorType color, uint16_t width, uint16_t height, OpacityType opacity)

功能说明

  • 核心用途:设置指定类型指针的线条绘制参数
  • 通过线条方式绘制时钟指针,可指定颜色、宽度、高度和透明度
  • 宽度和高度表示指针在12点方向时的尺寸

入参

名称 参数类型 详细说明 约束取值范围
type HandType 指针类型 HOUR_HAND / MINUTE_HAND / SECOND_HAND
position Point 线条靠近旋转中心端点的位置 x: int16_t, y: int16_t
center Point 旋转中心坐标 x: int16_t, y: int16_t
color ColorType 线条颜色 Color16 或 Color32,由 COLOR_DEPTH 宏决定
width uint16_t 12点方向时线条宽度 0 ~ 65535
height uint16_t 12点方向时线条高度 0 ~ 65535
opacity OpacityType 线条透明度 0(透明) ~ 255(不透明)

GetHandRotateCenter

Point GetHandRotateCenter(HandType type) const

功能说明

  • 核心用途:获取指定类型指针的旋转中心坐标
  • 该函数为 const 成员函数,不修改对象状态
  • 返回的坐标点为指针旋转的中心位置

入参

名称 参数类型 详细说明 约束取值范围
type HandType 指针类型 HOUR_HAND / MINUTE_HAND / SECOND_HAND

返回值

  • 返回类型:Point

返回指定指针的旋转中心

返回值 触发场景
Point{x, y} 正常返回旋转中心坐标

GetHandPosition

Point GetHandPosition(HandType type) const

功能说明

  • 核心用途:获取指定类型指针的位置坐标
  • 该函数为 const 成员函数,不修改对象状态
  • 返回的坐标点为指针在时钟上的位置

入参

名称 参数类型 详细说明 约束取值范围
type HandType 指针类型 HOUR_HAND / MINUTE_HAND / SECOND_HAND

返回值

  • 返回类型:Point

返回指定指针的位置

返回值 触发场景
Point{x, y} 正常返回指针位置坐标

GetHandInitAngle

uint16_t GetHandInitAngle(HandType type) const

功能说明

  • 核心用途:获取指定类型指针的初始旋转角度
  • 默认值为0,表示指针方向垂直向上
  • 该函数为 const 成员函数,不修改对象状态

入参

名称 参数类型 详细说明 约束取值范围
type HandType 指针类型 HOUR_HAND / MINUTE_HAND / SECOND_HAND

返回值

  • 返回类型:uint16_t

返回指定指针的初始旋转角度

返回值 触发场景
0 指针方向垂直向上(默认值)
其他值 指针初始旋转角度

GetHandCurrentAngle

uint16_t GetHandCurrentAngle(HandType type) const

功能说明

  • 核心用途:获取指定类型指针的当前旋转角度
  • 该角度随时间更新而变化
  • 该函数为 const 成员函数,不修改对象状态

入参

名称 参数类型 详细说明 约束取值范围
type HandType 指针类型 HOUR_HAND / MINUTE_HAND / SECOND_HAND

返回值

  • 返回类型:uint16_t

返回指定指针的当前旋转角度

返回值 触发场景
0 ~ 360 当前旋转角度值

SetInitTime24Hour

void SetInitTime24Hour(uint8_t hour, uint8_t minute, uint8_t second)

功能说明

  • 核心用途:以24小时制设置模拟时钟的初始时间
  • 设置后时钟指针将根据设置的时间定位到对应角度
  • 时间参数经取模运算后生效

入参

名称 参数类型 详细说明 约束取值范围
hour uint8_t 小时 0 ~ 23(取模后)
minute uint8_t 分钟 0 ~ 59(取模后)
second uint8_t 0 ~ 59(取模后)

SetInitTime12Hour

void SetInitTime12Hour(uint8_t hour, uint8_t minute, uint8_t second, bool am)

功能说明

  • 核心用途:以12小时制设置模拟时钟的初始时间
  • 需额外指定上午/下午标识
  • 设置后时钟指针将根据设置的时间定位到对应角度

入参

名称 参数类型 详细说明 约束取值范围
hour uint8_t 小时 0 ~ 11(取模后)
minute uint8_t 分钟 0 ~ 59(取模后)
second uint8_t 0 ~ 59(取模后)
am bool 上午/下午标识 true: 上午; false: 下午

OnDraw

void OnDraw(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea) override

功能说明

  • 核心用途:绘制模拟时钟到指定图形缓冲区
  • 入参引用 gfxDstBuffer 由调用方提供图形缓冲区,函数将绘制内容写入该缓冲区
  • 仅在无效区域内进行绘制

入参

名称 参数类型 详细说明 约束取值范围
gfxDstBuffer BufferInfo& 入参引用,目标图形缓冲区 已完成初始化的 BufferInfo 对象
invalidatedArea const Rect& 入参只读引用,需要绘制的无效区域 有效的矩形区域

OnPostDraw

void OnPostDraw(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea) override

功能说明

  • 核心用途:执行模拟时钟绘制后的操作
  • 入参引用 gfxDstBuffer 由调用方提供图形缓冲区
  • 在 OnDraw 之后调用,用于绘制后处理

入参

名称 参数类型 详细说明 约束取值范围
gfxDstBuffer BufferInfo& 入参引用,目标图形缓冲区 已完成初始化的 BufferInfo 对象
invalidatedArea const Rect& 入参只读引用,需要绘制的区域 有效的矩形区域

SetWorkMode

virtual void SetWorkMode(WorkMode newMode) override

功能说明

  • 核心用途:设置模拟时钟的工作模式
  • 工作模式决定时钟是否随时间变化更新绘制
  • 该函数为虚函数,支持子类重写

入参

名称 参数类型 详细说明 约束取值范围
newMode WorkMode 工作模式 ALWAYS_ON / NORMAL

GetWorkMode

virtual WorkMode GetWorkMode() const override

功能说明

  • 核心用途:获取模拟时钟的当前工作模式
  • 该函数为 const 虚函数,不修改对象状态,支持子类重写
  • 返回值反映时钟当前的绘制更新策略

返回值

  • 返回类型:WorkMode

返回当前工作模式

返回值 触发场景
ALWAYS_ON(0) 常亮模式,不随时间变化更新绘制
NORMAL(1) 正常模式,随时间变化更新绘制

UpdateClock

virtual void UpdateClock(bool clockInit) override

功能说明

  • 核心用途:更新模拟时钟的时间显示
  • 参数 clockInit 标识是否为首次初始化更新
  • 该函数为虚函数,支持子类重写

入参

名称 参数类型 详细说明 约束取值范围
clockInit bool 是否为首次初始化 true: 首次初始化; false: 非首次更新

Enumerations

UIAnalogClock::HandType

enum class HandType {
    HOUR_HAND,
    MINUTE_HAND,
    SECOND_HAND,
};
枚举成员 取值 描述
HOUR_HAND 0 时针
MINUTE_HAND 1 分针
SECOND_HAND 2 秒针

UIAnalogClock::DrawType

enum class DrawType {
    DRAW_LINE,
    DRAW_IMAGE,
};
枚举成员 取值 描述
DRAW_LINE 0 使用线条绘制指针
DRAW_IMAGE 1 使用图像绘制指针

Structures

OHOS::UIAnalogClock::Hand

class Hand : public HeapBase {
public:
    Hand()
        : center_{0, 0},
          initAngle_(0),
          preAngle_(0),
          nextAngle_(0),
          position_{0, 0},
          imageInfo_{{0, 0, 0}},
          color_{{0, 0, 0}},
          width_(0),
          height_(0),
          opacity_(0),
          drawtype_(DrawType::DRAW_IMAGE)
    {
    }
    virtual ~Hand() {}
    Point center_;
    uint16_t initAngle_;
    uint16_t preAngle_;
    uint16_t nextAngle_;
    Point position_;
    ImageInfo imageInfo_;
    TransformMap trans_;
    Rect target_;
    ColorType color_;
    uint16_t width_;
    uint16_t height_;
    OpacityType opacity_;
    DrawType drawtype_;
    Image image_;
};

成员说明

成员名称 数据类型 描述
center_ Point 指针旋转中心,x/y 为 int16_t
initAngle_ uint16_t 指针初始顺时针旋转角度,默认 0 表示垂直向上
preAngle_ uint16_t 指针最近一次旋转角度
nextAngle_ uint16_t 指针下一次旋转角度
position_ Point 指针在时钟上的位置
imageInfo_ ImageInfo 指针图像信息
trans_ TransformMap 指针旋转与平移变换信息
target_ Rect 旋转平移后的新矩形区域
color_ ColorType 指针颜色
width_ uint16_t 指针宽度
height_ uint16_t 指针高度
opacity_ OpacityType 指针透明度,0(透明) ~ 255(不透明)
drawtype_ DrawType 指针绘制类型,DRAW_LINE 或 DRAW_IMAGE
image_ Image 指针对应的图像对象