容器类组件开发指导

    图 1 普通容器类组件结构

    RootView、UIAbstractScroll、UIPicker组件从UIViewGroup继承,UIList、UIScrollView、UISwipeView组件从UIAbstractScroll继承。

    使用场景

    UIViewGroup是容器类组件基类,实现增加、删除、插入等操作,通过增加方法可以添加子组件。普通容器类组件子组件需要设置位置信息,位置信息为相对父组件的相对坐标。组件树结构如下图:

    图 2 组件树结构示意图

    容器类组件开发指导 - 图1

    往根节点rootView里添加ViewGroup1容器组件和View1组件,往ViewGroup1容器组件里再添加View2组件和ViewGroup2容器组件,在View1之后添加View3组件。

    • 关于渲染:容器类组件在渲染时会遍历所有子组件OnDraw方法,以达到刷新所有组件的目的。
    • 关于树结构遍历:UIViewGroup提供如下方法实现遍历、查找、管理组件树。

    表 1 ViewGroup接口说明

    开发步骤

    1. 构造button实例并设置坐标信息。

    2. 构造UIViewGroup实例,并设置坐标信息。

    3. 使用Add方法添加Button实例到UIViewGroup。

    使用场景

    UIScrollView提供可滑动的容器类组件,子组件可在触摸事件驱动下上下、左右滑动,并提供水平和垂直方向的游标显示功能。

    表 2 ScrollView接口说明

    方法

    功能

    void ScrollBy(int16_t xDistance, int16_t yDistance)

    移动视图

    void SetScrollbarWidth(uint8_t width)

    设置滑动条宽度

    void SetHorizontalScrollState(bool state)

    设置水平滑动状态

    获取水平是否可滑动状态

    void SetVerticalScrollState(bool state)

    设置垂直滑动状态

    bool GetVerticalScrollState() const

    获取垂直是否可滑动状态

    void SetXScrollBarVisible(bool state)

    设置X轴滑动条是否可见

    void SetYScrollBarVisible(bool state)

    设置Y轴滑动条是否可见

    void RegisterScrollListener(OnScrollListener* scrollListener)

    注册滑动事件回调类

    void RefreshScrollBar()

    刷新滑动条

    virtual void OnScrollStart() {}

    滚动开始回调函数

    virtual void OnScrollEnd() {}

    滚动结束回调函数

    uint8_t GetScrollState() const

    获取滚动状态

    void SetScrollState(uint8_t state)

    设置滚动状态

    开发步骤

    添加两个button子组件,并显示水平、垂直方向游标。