跳转至

ui_cross_view

ui_cross_view 模块提供十字交叉视图组件,支持卡片式分页与卡片滑动交互效果。

Class Summary

OHOS::CardSwipe

卡片滑动效果算法基类,提供滑动过程中的视觉效果控制

  • 构造:无
  • 成员函数

    接口名称 功能简述
    CardSwipeAlg 卡片滑动算法(UICardPage 参数重载)
    CardSwipeAlg 卡片滑动算法(UIImageView 参数重载)
    StartEffect 启动卡片滑动特效
    StopEffect 停止卡片滑动特效
    IsStarted 查询滑动特效是否已启动
    SetContainer 设置容器视图
    EnableClip 启用或禁用圆形裁剪
  • 使用包含头文件#include "components/card_swipe.h"

  • 声明头文件middleware/services/gui/uikit/proprietary/include/components/card_swipe.h
  • 公有运算符:无
  • 继承关系:HeapBase
  • 嵌套类型:无
  • 模板形参:无

OHOS::UICardPage

与 UICrossView 配合使用的卡片页面视图

  • 构造:无
  • 成员函数

    接口名称 功能简述
    OnActive 页面激活回调
    OnInactive 页面非激活回调
    PreLoad 预加载资源回调
    UnLoad 卸载资源回调
    ScrollBegin 滚动开始通知回调
    ScrollEnd 滚动结束通知回调
    CoverBegin 垂直覆盖开始通知回调
    CoverEnd 垂直覆盖结束通知回调
    OnCovered 页面被覆盖回调
    OnUncovered 页面取消覆盖回调
    OnPause 页面暂停回调
    SetCoverable 设置页面是否可被覆盖
    IsCoverable 查询页面是否可被覆盖
    GetViewType 获取视图类型
    ClearCache 清除页面图像缓存
  • 使用包含头文件#include "components/ui_card_page.h"

  • 声明头文件middleware/services/gui/uikit/proprietary/include/components/ui_card_page.h
  • 公有运算符:无
  • 继承关系:UIViewGroup
  • 嵌套类型:无
  • 模板形参:无

OHOS::UICrossView

提供水平和垂直方向拖拽翻页的交叉视图

Functions

OHOS::CardSwipe

CardSwipeAlg

virtual void CardSwipeAlg(UICardPage* leftCard, UICardPage* rightCard, int16_t xOffset)

功能说明

  • 核心用途:计算卡片滑动过程中左右两张 UICardPage 的视觉效果
  • 设计目的:为派生类提供可重写的滑动算法接口,支持自定义滑动特效
  • 使用场景:水平拖拽卡片时由 UICrossView 调用,传入左右卡片指针及拖拽偏移量

入参

名称 参数类型 详细说明 约束取值范围
leftCard UICardPage* 左侧卡片视图指针,入参指针,不可为 nullptr 有效的 UICardPage 对象指针
rightCard UICardPage* 右侧卡片视图指针,入参指针,不可为 nullptr 有效的 UICardPage 对象指针
xOffset int16_t 拖拽偏移距离 xOffset > 0 表示从左向右拖拽,xOffset < 0 表示从右向左拖拽

CardSwipeAlg

virtual void CardSwipeAlg(UIImageView* leftCard, UIImageView* rightCard, int16_t xOffset)

功能说明

  • 核心用途:计算卡片滑动过程中左右两张 UIImageView 的视觉效果
  • 设计目的:为派生类提供基于 UIImageView 的滑动算法重载接口
  • 使用场景:当卡片内容为 UIImageView 类型时由 UICrossView 调用

入参

名称 参数类型 详细说明 约束取值范围
leftCard UIImageView* 左侧图片卡片视图指针,入参指针,不可为 nullptr 有效的 UIImageView 对象指针
rightCard UIImageView* 右侧图片卡片视图指针,入参指针,不可为 nullptr 有效的 UIImageView 对象指针
xOffset int16_t 拖拽偏移距离 xOffset > 0 表示从左向右拖拽,xOffset < 0 表示从右向左拖拽

StartEffect

virtual void StartEffect()

功能说明

  • 核心用途:启动卡片滑动特效
  • 设计目的:标记特效进入活跃状态,供 IsStarted 查询
  • 使用场景:在 CardSwipeAlg 中判定特效未启动时自动调用

StopEffect

virtual void StopEffect()

功能说明

  • 核心用途:停止卡片滑动特效
  • 设计目的:标记特效退出活跃状态,供 IsStarted 查询
  • 使用场景:滑动动画结束时调用以终止特效

IsStarted

bool IsStarted()

功能说明

  • 核心用途:查询卡片滑动特效是否已启动
  • 设计目的:为调用方提供特效状态查询能力
  • 使用场景:CardSwipeAlg 中判断是否需要调用 StartEffect

返回值

  • 返回类型:bool

返回特效启动状态

返回值 触发场景
true 特效已启动
false 特效未启动

SetContainer

void SetContainer(UIViewGroup* view)

功能说明

  • 核心用途:设置滑动特效所作用的容器视图
  • 设计目的:为特效算法提供容器视图引用,便于获取容器属性
  • 使用场景:在创建 CardSwipe 后、注册到 UICrossView 前设置容器

入参

名称 参数类型 详细说明 约束取值范围
view UIViewGroup* 容器视图指针,入参指针,通常为 UICrossView 实例 有效的 UIViewGroup 对象指针

EnableClip

void EnableClip(bool enable)

功能说明

  • 核心用途:启用或禁用卡片页面的圆形裁剪效果
  • 设计目的:控制滑动过程中是否将卡片裁剪为圆形
  • 使用场景:需要在滑动特效中对卡片进行圆形裁剪时调用

入参

名称 参数类型 详细说明 约束取值范围
enable bool 是否启用圆形裁剪 true:启用;false:禁用

OHOS::UICardPage

OnActive

virtual void OnActive(void)

功能说明

  • 核心用途:页面激活回调,当页面成为当前活跃页面时触发
  • 设计目的:为派生类提供页面激活时的资源加载或状态更新入口
  • 使用场景:调用 SetHorCurrentPage() 或 Presenter::OnResume() 时触发

OnInactive

virtual void OnInactive(void)

功能说明

  • 核心用途:页面非激活回调,当页面从活跃状态切换为非活跃时触发
  • 设计目的:为派生类提供页面非激活时的资源释放或状态重置入口
  • 使用场景:调用 SetHorCurrentPage() 切换到其他页面时触发

PreLoad

virtual void PreLoad(void)

功能说明

  • 核心用途:预加载资源回调
  • 设计目的:在页面即将可见前为派生类提供资源预加载入口
  • 使用场景:滑动动画结束时或调用 SetHorCurrentPage() 时触发

UnLoad

virtual void UnLoad(void)

功能说明

  • 核心用途:卸载资源回调
  • 设计目的:在页面即将不可见前为派生类提供资源卸载入口
  • 使用场景:滑动动画结束时或调用 SetHorCurrentPage() 时触发

ScrollBegin

virtual void ScrollBegin(bool isActive)

功能说明

  • 核心用途:滚动开始通知回调
  • 设计目的:为派生类提供滚动开始时的状态更新入口
  • 使用场景:水平滚动时当前页及左右页的 ScrollBegin 被调用;垂直滚动时上下页的 ScrollBegin 被调用

入参

名称 参数类型 详细说明 约束取值范围
isActive bool 当前页面是否为活跃页面 true:活跃;false:非活跃

ScrollEnd

virtual void ScrollEnd(bool isActive)

功能说明

  • 核心用途:滚动结束通知回调
  • 设计目的:为派生类提供滚动结束时的状态更新入口
  • 使用场景:水平滚动结束时当前页及左右页的 ScrollEnd 被调用;垂直滚动结束时上下页的 ScrollEnd 被调用

入参

名称 参数类型 详细说明 约束取值范围
isActive bool 当前页面是否为活跃页面 true:活跃;false:非活跃

CoverBegin

virtual void CoverBegin(bool isCovered)

功能说明

  • 核心用途:垂直覆盖开始通知回调
  • 设计目的:为派生类提供垂直方向滚动开始时的覆盖状态通知入口
  • 使用场景:垂直滚动开始时水平当前页的 CoverBegin 被调用

入参

名称 参数类型 详细说明 约束取值范围
isCovered bool 当前页面是否被覆盖 true:被覆盖;false:未被覆盖

CoverEnd

virtual void CoverEnd(bool isCovered)

功能说明

  • 核心用途:垂直覆盖结束通知回调
  • 设计目的:为派生类提供垂直方向滚动结束时的覆盖状态通知入口
  • 使用场景:垂直滚动结束时水平当前页的 CoverEnd 被调用

入参

名称 参数类型 详细说明 约束取值范围
isCovered bool 当前页面是否被覆盖 true:被覆盖;false:未被覆盖

OnCovered

virtual void OnCovered(void)

功能说明

  • 核心用途:页面被覆盖回调
  • 设计目的:为派生类提供页面被垂直方向页面覆盖时的通知入口
  • 使用场景:调用 SetVerCurrentPage() 且水平页面被覆盖时触发

OnUncovered

virtual void OnUncovered(void)

功能说明

  • 核心用途:页面取消覆盖回调
  • 设计目的:为派生类提供页面从垂直方向覆盖中恢复时的通知入口
  • 使用场景:调用 SetVerCurrentPage() 且水平页面未被覆盖时触发

OnPause

virtual void OnPause(void)

功能说明

  • 核心用途:页面暂停回调
  • 设计目的:为派生类提供页面暂停时的资源释放或状态保存入口
  • 使用场景:调用 Presenter::OnPause 时触发

SetCoverable

void SetCoverable(bool coverable)

功能说明

  • 核心用途:设置页面是否允许被垂直方向页面覆盖
  • 设计目的:控制该页面在垂直滚动时是否可被上下页面覆盖
  • 使用场景:创建 UICardPage 后、添加到 UICrossView 前设置覆盖属性

入参

名称 参数类型 详细说明 约束取值范围
coverable bool 是否允许被覆盖 true:允许覆盖;false:不允许覆盖

IsCoverable

bool IsCoverable(void)

功能说明

  • 核心用途:查询页面是否允许被垂直方向页面覆盖
  • 设计目的:为调用方提供覆盖属性查询能力
  • 使用场景:UICrossView 在垂直滚动时查询当前页面的可覆盖状态

返回值

  • 返回类型:bool

返回可覆盖状态

返回值 触发场景
true 页面允许被覆盖
false 页面不允许被覆盖

GetViewType

UIViewType GetViewType() const override

功能说明

  • 核心用途:获取视图类型标识
  • 设计目的:返回 UI_CARD_PAGE 类型,用于视图类型区分
  • 使用场景:需要判断视图是否为 UICardPage 类型时调用

返回值

  • 返回类型:UIViewType

返回视图类型标识

返回值 触发场景
UI_CARD_PAGE 当前视图为 UICardPage 类型

ClearCache

void ClearCache(void)

功能说明

  • 核心用途:清除当前页面的图像缓存
  • 设计目的:释放页面中缓存的图像资源,减少内存占用
  • 使用场景:页面不再需要显示或需要刷新图像内容时调用

OHOS::UICrossView

GetInstance

static UICrossView* GetInstance(void)

功能说明

  • 核心用途:获取 UICrossView 的静态单例实例
  • 设计目的:提供全局唯一的 UICrossView 实例访问入口
  • 使用场景:需要获取交叉视图实例进行页面添加、切换等操作时调用

返回值

  • 返回类型:UICrossView*

返回单例实例指针

返回值 触发场景
非空指针 返回 UICrossView 单例实例地址

OnMoveChild

void OnMoveChild(UISwipeView& view, int16_t xOffset, int16_t yOffset) override

功能说明

  • 核心用途:子视图移动回调,处理滑动过程中子视图的偏移
  • 设计目的:响应 VerSwipeView 的子视图移动事件,更新卡片位置
  • 使用场景:垂直方向滑动过程中由 VerSwipeView 触发

入参

名称 参数类型 详细说明 约束取值范围
view UISwipeView& 触发移动的滑动视图引用,入参引用 有效的 UISwipeView 对象引用
xOffset int16_t 水平偏移量 像素偏移值
yOffset int16_t 垂直偏移量 像素偏移值

OnSwipe

void OnSwipe(UISwipeView& view) override

功能说明

  • 核心用途:滑动完成回调,处理滑动动画结束后的状态更新
  • 设计目的:响应 UISwipeView 的滑动完成事件,更新页面索引和状态
  • 使用场景:水平方向滑动动画结束时由 UISwipeView 触发

入参

名称 参数类型 详细说明 约束取值范围
view UISwipeView& 触发回调的滑动视图引用,入参引用 有效的 UISwipeView 对象引用

OnDragStartEvent

bool OnDragStartEvent(const DragEvent& event) override

功能说明

  • 核心用途:处理拖拽开始事件
  • 设计目的:记录拖拽起始状态,为后续拖拽和结束事件提供基准
  • 使用场景:用户手指按下并开始拖拽时由事件分发机制触发

入参

名称 参数类型 详细说明 约束取值范围
event const DragEvent& 拖拽事件引用,入参只读引用 有效的 DragEvent 对象引用

返回值

  • 返回类型:bool

返回事件是否已被消费

返回值 触发场景
true 事件已消费,不再向下传递
false 事件未消费,继续向下传递

OnDragEvent

bool OnDragEvent(const DragEvent& event) override

功能说明

  • 核心用途:处理拖拽进行中事件
  • 设计目的:在拖拽过程中更新卡片位置和视觉效果
  • 使用场景:用户手指在屏幕上持续拖拽时由事件分发机制触发

入参

名称 参数类型 详细说明 约束取值范围
event const DragEvent& 拖拽事件引用,入参只读引用 有效的 DragEvent 对象引用

返回值

  • 返回类型:bool

返回事件是否已被消费

返回值 触发场景
true 事件已消费
false 事件未消费

OnDragEndEvent

bool OnDragEndEvent(const DragEvent& event) override

功能说明

  • 核心用途:处理拖拽结束事件
  • 设计目的:在拖拽结束后执行页面切换动画和状态更新
  • 使用场景:用户手指从屏幕抬起时由事件分发机制触发

入参

名称 参数类型 详细说明 约束取值范围
event const DragEvent& 拖拽事件引用,入参只读引用 有效的 DragEvent 对象引用

返回值

  • 返回类型:bool

返回事件是否已被消费

返回值 触发场景
true 事件已消费
false 事件未消费

RemoveAll

void RemoveAll() override

功能说明

  • 核心用途:移除所有子视图
  • 设计目的:清空水平和垂直方向的所有页面视图
  • 使用场景:需要重置 UICrossView 内容或销毁前清理时调用

SetPosition

void SetPosition(int16_t x, int16_t y, int16_t width, int16_t height) override

功能说明

  • 核心用途:设置视图的位置和尺寸
  • 设计目的:更新 UICrossView 的位置与大小,并同步更新内部子视图布局
  • 使用场景:初始化视图或动态调整视图位置和尺寸时调用

入参

名称 参数类型 详细说明 约束取值范围
x int16_t 视图左上角 X 坐标 像素值
y int16_t 视图左上角 Y 坐标 像素值
width int16_t 视图宽度 > 0
height int16_t 视图高度 > 0

Resize

void Resize(int16_t width, int16_t height) override

功能说明

  • 核心用途:调整视图尺寸
  • 设计目的:更新 UICrossView 的宽高,并同步更新内部子视图布局
  • 使用场景:需要动态调整视图大小时调用

入参

名称 参数类型 详细说明 约束取值范围
width int16_t 视图宽度 > 0
height int16_t 视图高度 > 0

HorAdd

void HorAdd(UICardPage* view)

功能说明

  • 核心用途:水平方向添加卡片页面
  • 设计目的:将 UICardPage 添加到水平滑动列表末尾
  • 使用场景:构建水平方向的卡片页面列表时调用

入参

名称 参数类型 详细说明 约束取值范围
view UICardPage* 待添加的卡片页面指针,入参指针,不可为 nullptr 有效的 UICardPage 对象指针

HorInsert

void HorInsert(UICardPage* prevView, UICardPage* insertView)

功能说明

  • 核心用途:水平方向在指定位置插入卡片页面
  • 设计目的:将 insertView 插入到 prevView 之后;若 prevView 为 nullptr 则插入为首页
  • 使用场景:需要在水平列表的指定位置插入页面时调用

入参

名称 参数类型 详细说明 约束取值范围
prevView UICardPage* 前置页面指针,入参指针,可为 nullptr nullptr 表示插入为首页;非空为有效 UICardPage 指针
insertView UICardPage* 待插入的卡片页面指针,入参指针,不可为 nullptr 有效的 UICardPage 对象指针

VerAdd

void VerAdd(UICardPage* view, VPage page)

功能说明

  • 核心用途:垂直方向添加卡片页面
  • 设计目的:将 UICardPage 添加到垂直方向的上方或下方位置
  • 使用场景:构建垂直方向的卡片页面(如下拉通知、上拉菜单)时调用

入参

名称 参数类型 详细说明 约束取值范围
view UICardPage* 待添加的卡片页面指针,入参指针,不可为 nullptr 有效的 UICardPage 对象指针
page VPage 垂直方向页面位置 VPage::UP_PAGE:上方;VPage::DOWN_PAGE:下方

Remove

void Remove(UIView* view, uint8_t direction)

功能说明

  • 核心用途:移除指定方向的视图
  • 设计目的:从水平或垂直方向的页面列表中移除指定视图
  • 使用场景:需要动态移除某个页面时调用

入参

名称 参数类型 详细说明 约束取值范围
view UIView* 待移除的视图指针,入参指针 有效的 UIView 对象指针
direction uint8_t 目标方向 0:水平方向;1:垂直方向

SetHorCurrentPage

void SetHorCurrentPage(uint16_t index, bool loadAdjacent = true)

功能说明

  • 核心用途:设置水平方向当前页索引
  • 设计目的:切换水平方向的当前显示页面,并可选择是否加载相邻页面
  • 使用场景:程序化切换水平页面时调用

入参

名称 参数类型 详细说明 约束取值范围
index uint16_t 目标页面索引 0 ~ 水平页面总数 - 1
loadAdjacent bool 是否加载相邻页面 true:加载相邻页面(默认);false:不加载

SetVerCurrentPage

void SetVerCurrentPage(uint16_t index)

功能说明

  • 核心用途:设置垂直方向当前页索引
  • 设计目的:切换垂直方向的当前显示页面
  • 使用场景:程序化切换垂直页面时调用

入参

名称 参数类型 详细说明 约束取值范围
index uint16_t 目标页面索引 0 ~ 垂直页面总数 - 1

GetCurrentPageId

uint16_t GetCurrentPageId(uint8_t direction = 0)

功能说明

  • 核心用途:获取指定方向的当前页索引
  • 设计目的:查询水平或垂直方向的当前活跃页面索引
  • 使用场景:需要获取当前页面位置时调用

入参

名称 参数类型 详细说明 约束取值范围
direction uint8_t 目标方向 0:水平方向(默认);1:垂直方向

返回值

  • 返回类型:uint16_t

返回当前页索引

返回值 触发场景
页面索引 返回指定方向的当前页索引值

GetCurrentPageView

UICardPage* GetCurrentPageView(uint8_t direction = 0)

功能说明

  • 核心用途:获取指定方向的当前页视图
  • 设计目的:查询水平或垂直方向的当前活跃页面的 UICardPage 指针
  • 使用场景:需要获取当前页面视图进行操作时调用

入参

名称 参数类型 详细说明 约束取值范围
direction uint8_t 目标方向 0:水平方向(默认);1:垂直方向

返回值

  • 返回类型:UICardPage*

返回当前页视图指针

返回值 触发场景
非空指针 返回当前页面的 UICardPage 对象指针
nullptr 无当前页面

SetAnimatorTime

void SetAnimatorTime(uint16_t time)

功能说明

  • 核心用途:设置释放手指后的滑动动画时长
  • 设计目的:控制页面切换动画的持续时间
  • 使用场景:需要自定义页面切换动画速度时调用

入参

名称 参数类型 详细说明 约束取值范围
time uint16_t 动画时长,单位为毫秒 > 0

SetLoopState

void SetLoopState(bool loop)

功能说明

  • 核心用途:设置水平方向的循环滑动状态
  • 设计目的:启用循环模式后,滑动到末尾页可继续滑到首页
  • 使用场景:需要水平方向无限循环翻页时调用

入参

名称 参数类型 详细说明 约束取值范围
loop bool 是否启用循环 true:启用循环;false:禁用循环

EnableScreenCap

void EnableScreenCap(bool enable)

功能说明

  • 核心用途:启用或禁用滑动过程中的截屏功能
  • 设计目的:启用后滑动时使用截屏替代实时绘制,提升滑动流畅度
  • 使用场景:对滑动性能有要求且页面内容可截屏缓存时调用

入参

名称 参数类型 详细说明 约束取值范围
enable bool 是否启用截屏 true:启用;false:禁用

IsEnableScreenCap

bool IsEnableScreenCap(void)

功能说明

  • 核心用途:查询截屏功能是否启用
  • 设计目的:为调用方提供截屏状态查询能力
  • 使用场景:需要判断当前是否使用截屏模式时调用

返回值

  • 返回类型:bool

返回截屏启用状态

返回值 触发场景
true 截屏功能已启用
false 截屏功能未启用

UpdateHorScreencap

bool UpdateHorScreencap(uint16_t index)

功能说明

  • 核心用途:更新水平方向指定索引卡片的截屏
  • 设计目的:在页面内容变化后刷新指定卡片的截屏缓存
  • 使用场景:页面内容更新后需要刷新截屏缓存时调用

入参

名称 参数类型 详细说明 约束取值范围
index uint16_t 水平方向卡片索引 0 ~ 水平页面总数 - 1

返回值

  • 返回类型:bool

返回更新结果

返回值 触发场景
true 截屏更新成功
false 截屏更新失败

RegisterSwipeCallback

void RegisterSwipeCallback(CardSwipe* callback)

功能说明

  • 核心用途:注册卡片滑动效果回调
  • 设计目的:为水平滑动提供自定义的视觉效果算法
  • 使用场景:需要自定义卡片滑动视觉效果时注册 CardSwipe 派生类实例

入参

名称 参数类型 详细说明 约束取值范围
callback CardSwipe* 滑动效果回调指针,入参指针,可为 nullptr 有效的 CardSwipe 对象指针或 nullptr(取消注册)

SetOnSwipeListener

void SetOnSwipeListener(UISwipeView::OnSwipeListener* onSwipeListener)

功能说明

  • 核心用途:设置滑动动画停止后的回调监听器
  • 设计目的:在滑动动画结束时通知外部调用方
  • 使用场景:需要在页面切换动画完成后执行业务逻辑时调用

入参

名称 参数类型 详细说明 约束取值范围
onSwipeListener UISwipeView::OnSwipeListener* 滑动监听器指针,入参指针,可为 nullptr 有效的 OnSwipeListener 对象指针或 nullptr(取消监听)

GetViewType

UIViewType GetViewType() const override

功能说明

  • 核心用途:获取视图类型标识
  • 设计目的:返回 UI_CROSS_VIEW 类型,用于视图类型区分
  • 使用场景:需要判断视图是否为 UICrossView 类型时调用

返回值

  • 返回类型:UIViewType

返回视图类型标识

返回值 触发场景
UI_CROSS_VIEW 当前视图为 UICrossView 类型

SetBlurRadius

void SetBlurRadius(float radius)

功能说明

  • 核心用途:设置背景模糊半径
  • 设计目的:控制垂直页面覆盖时的背景模糊程度
  • 使用场景:需要在垂直滑动时显示背景模糊效果时调用

入参

名称 参数类型 详细说明 约束取值范围
radius float 模糊半径 0.0f ~ 32.0f,默认值 10.0f

SetSwipeACCLevel

void SetSwipeACCLevel(uint8_t value, uint8_t direction = 0)

功能说明

  • 核心用途:设置手指抬起后的补偿距离
  • 设计目的:控制释放手指后页面继续滑动的补偿量,影响翻页灵敏度
  • 使用场景:需要调整翻页触发灵敏度时调用

入参

名称 参数类型 详细说明 约束取值范围
value uint8_t 补偿距离值 0 ~ 255
direction uint8_t 目标方向 0:水平方向(默认);1:垂直方向

Enumerations

UICrossView::VPage

enum class VPage {
    UP_PAGE = 0,
    DOWN_PAGE
};
枚举成员 取值 描述
UP_PAGE 0 上方页面
DOWN_PAGE 1 下方页面