掌桥专利:专业的专利平台
掌桥专利
首页

一种实现列表控件的处理方法

文献发布时间:2023-06-19 18:37:28


一种实现列表控件的处理方法

技术领域

本发明涉及嵌入式GUI技术领域,具体为一种实现列表控件的处理方法。

背景技术

目前嵌入式GUI大部分还是按钮、文本、进度条这些展示方式,涉及到多数据展示时,则操作需要使用大量的文本、按钮控件去处理,并且这种方式还有它的局限性,比如不支持滑动查看更多的内容;因此为了实现操作方便,及可以实现支持滑动查看更多的内容,在此引入列表控件,来解决多数据展示的应用场景。

发明内容

本发明的目的在于提供一种实现列表控件的处理方法,以解决上述背景技术所提出的技术问题。

为实现上述目的,本发明广泛应用嵌入式GUI的技术方案,特别是提供如下技术方案:一种实现列表控件的处理方法,包括以下步骤:

步骤S001,通过FlyThings IDE上设置好列表控件的属性参数;

步骤S002,调用refreshListView请求刷新列表控件,触发列表控件重绘动作,回调ZKListView::onDraw重绘接口;

步骤S003,列表控件上更新数据需引入ZKListView::AbsListAdapter适配器,列表里边的数据是通过适配器填充好获取的,需继承AbsListAdapter实现getListItemCount接口、obtainListItemData接口;

步骤S004,实现getListItemCount接口的返回值,表示列表总共有多少项;实现obtainListItemData接口的参数pListItem为列表项指针,index为对应第几项索引;

步骤S005,适配器填充好后,需将setListAdapter设置到列表控件;

步骤S006,绘制列表控件,依次调用drawListView画列表项,并回调定义好的适配器填充好每一项的数据内容,并绘制出可见区域的列表项。

优选的,所述实现列表控件的处理方法还包括:

步骤S007,将绘制图片的情况引入了引用计数算法,以图片的路径作为关键key,图片内容bitmap作为value,加载图片时,先检测是否存在容器里边。

优选的,在所述的步骤S007中,加载图片存在容器里边时,则引用计算累加1,并返回对应的value。

优选的,在所述的步骤S007中,加载图片不存在容器里边时,加载出图片bitmap内容,引用计数置为1,并加入容器里边。

优选的,所述实现列表控件的处理方法还包括:

步骤S008,列表响应触摸事件,点击列表时判断坐标落在哪一子项上并记录,移动触摸,计算出列表项偏移值,并对列表进行重绘制,其中绘制流程如步骤S002至步骤S006。

优选的,所述实现列表控件的处理方法还包括:

步骤S009,从按下滑动到抬起,都将触摸事件的坐标及时间加到VelocityTracker::addMovement用于计算抬起瞬间速度值;

其中,瞬间速度值计算公式为:v = s / t 得到速度值。

优选的,在所述步骤S009中,所述通过瞬间速度值,可以进行惯性移动,每次按0.95比例减小速度,并计算出移动距离,移动列表项。

优选的,所述实现列表控件的处理方法还包括:步骤S010,捕获列表项点击事件,需要继承ZKListView::IItemClickListener实现onItemClick接口,点击了列表中的某一项,会触发onItemClick事件。

优选的,在所述步骤S001中,列表控件的属性参数包括:坐标位置、列表项数、拖拽效果,并由列表控件解析属性参数,创建ZKListItem列表项及子项。

优选的,在所述步骤S002中,回调ZKListView::onDraw重绘接口,其接口里边执行drawBackground画背景、drawListView画列表项内容、drawScrollbar画滚动条。

与现有技术相比,本发明的有益效果是:

(1)、本发明通过步骤S001至步骤S006,实现了列表控件的处理,并通过提供数据的AbsListAdapter适配器,继承实现相应的接口,列表控件有更新情况,会自动调用填充数据;

(2)、本发明通过绘制图片的情况引入了引用计数算法,以图片的路径作为关键key,图片内容bitmap作为value,加载图片时先检测是否存在容器里边,存在的情况下,引用计算累加1,并返回对应的value,不存在情况下,加载出图片bitmap内容,引用计数置为1,并加入容器里边;对于存在绘制重复图片的情况,这种算法可以大大减少图片的内存,并提升绘制效率;

(3)、本发明通过从按下滑动到抬起,都将触摸事件的坐标及时间加到VelocityTracker::addMovement用于计算抬起瞬间速度值,计算公式为:v = s/ t 得到速度值;依靠这个速度值进行惯性移动,每次按0.95比例减小速度,并计算出移动距离,移动列表项;利用惯性移动列表项,使得交互更细腻,更平滑。

附图说明

图1为本发明的其一实现列表控件的处理方法流程示意图;

图2为本发明的其二实现列表控件的处理方法流程示意图;

图3为本发明的适配器使用流程示意图;

图4为本发明的列表项点击事件流程示意图;

图5为本发明的绘制流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1至图5所示,为本发明中一种实现列表控件的处理方法。

步骤S001,为了实现列表控件的构建,所述通过FlyThings IDE上设置好列表控件的属性参数,如:坐标位置、列表项数、拖拽效果等等;由列表控件解析属性参数,创建ZKListItem列表项及子项;

步骤S002,为了实现列表控件绘图的工作,所述调用refreshListView请求刷新列表控件,触发列表控件重绘动作,回调ZKListView::onDraw重绘接口,接口里边执行drawBackground画背景、drawListView画列表项内容、drawScrollbar画滚动条;

步骤S003,为了提供填充数据的渠道,所述列表控件上更新数据需引入ZKListView::AbsListAdapter适配器,列表里边的数据是通过适配器填充好获取的,需继承AbsListAdapter实现getListItemCount、obtainListItemData这两个接口;

步骤S004,AbsListAdapter的getListItemCount接口说明,该接口的返回值表示列表总共有多少项;obtainListItemData接口说明,参数pListItem为列表项指针,index为对应第几项索引;

步骤S005,为了列表控件内部回调获取信息,所述实现好适配器填充后,需setListAdapter设置到列表控件;

步骤S006,为了绘制列表每一项的UI,所述绘制列表控件的过程中会依次调用drawListView画列表项,这过程中会回调定义好的适配器填充好每一项的数据内容,并绘制出可见区域的列表项;

步骤S007、绘制图片的情况引入了引用计数算法,以图片的路径作为关键key,图片内容bitmap作为value,加载图片时先检测是否存在容器里边,存在的情况下,引用计算累加1,并返回对应的value,不存在情况下,加载出图片bitmap内容,引用计数置为1,并加入容器里边;对于存在绘制重复图片的情况,这种算法可以大大减少图片的内存,并提升绘制效率;

步骤S008、列表响应触摸事件,点击列表时判断坐标落在哪一子项上并记录,移动触摸,计算出列表项偏移值,对列表进行重绘,绘制流程如上:步骤S002 ~步骤S006;

步骤S009:从按下滑动到抬起,都将触摸事件的坐标及时间加到VelocityTracker::addMovement用于计算抬起瞬间速度值,计算公式为:v = s/ t 得到速度值;依靠这个速度值进行惯性移动,每次按0.95比例减小速度,并计算出移动距离,移动列表项;利用惯性移动列表项,使得交互更细腻,更平滑;

步骤S010,为了提供用户响应的回调接口,便于捕获事件后,进行相应的交互操作;捕获列表项点击事件,需要继承ZKListView::IItemClickListener实现onItemClick接口,点击了列表中的某一项,会触发onItemClick事件;这样的设计方式,提供了用户响应的回调接口,便于捕获事件后进行相应的交互操作。

实施例1:

参阅图3所示,一种适配器的使用流程如下:

继承ZKListView::AbsListAdapter,然后实现getLisItemCount、obtainListItemData接口,再次经列表setLisAdapter设置适配器,并在有数据需要更新调用refreshisView刷新列表时;列表控件内部会调有适配器请求数据。

实施例2:

参阅图4所示,一种列表项点击事件流程如下:

继承ZKListView::IItemClickListener,实现onItemClick接口,通过setItemClickListener注册监听,并通过index、itemID 可以知道点击的是哪一子项,执行相应的操作。

实施例3:

参阅图5所示,一种绘制流程图如下:

获取列表项数目,循环调用填充数据接口,并设置好列表子项属性,从而绘制各个子项UI。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

技术分类

06120115631134