CN117762299A - 多向滑动方法、终端设备及计算机可读存储介质 - Google Patents
多向滑动方法、终端设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN117762299A CN117762299A CN202311799542.5A CN202311799542A CN117762299A CN 117762299 A CN117762299 A CN 117762299A CN 202311799542 A CN202311799542 A CN 202311799542A CN 117762299 A CN117762299 A CN 117762299A
- Authority
- CN
- China
- Prior art keywords
- sliding
- window
- sliding direction
- chain
- slide
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000004590 computer program Methods 0.000 claims description 19
- 238000012544 monitoring process Methods 0.000 claims description 9
- 230000000694 effects Effects 0.000 abstract description 20
- 230000003993 interaction Effects 0.000 abstract description 14
- 230000006870 function Effects 0.000 description 31
- 230000008569 process Effects 0.000 description 14
- 238000012545 processing Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- User Interface Of Digital Computer (AREA)
Abstract
本申请适用于人机交互技术领域,提供了一种多向滑动方法、终端设备及计算机可读存储介质,包括:获取所述目标窗口对应的第一滑动方向;若所述目标窗口为路口对象,则根据所述第一滑动方向获取第二滑动方向,其中,所述第二滑动方向与所述第一滑动方向垂直;控制所述目标窗口沿所述第一滑动方向或所述第二滑动方向移动。通过上述方法,可以在UI场景中实现多向滑动效果,利于提上UI交互体验。
Description
技术领域
本申请属于人机交互技术领域,尤其涉及一种多向滑动方法、终端设备及计算机可读存储介质。
背景技术
在如POS产品的UI场景变换大多使用手势实现,在使用手势时,由于检测手势需要一定的时间,这就导致页面在变化过程中,会因为这些时间产生一定的卡顿,这在硬件能力有限的情况下尤为明显。使用开源嵌入式图像库(LightVersatile GraphicsLibrary,LVGL)中的滑动来代替手势进行UI场景变换将能极大改善用户的UI交互体验。
使用LVGL提供的滑动效果时,一般只能实现双向滑动,比如垂直滑动或水平滑动,而不能三向和四向滑动,这就导致某些场景变换仍然只能使用手势,而手势会导致卡顿。
发明内容
本申请实施例提供了一种滑动方法、装置、终端设备及计算机可读存储介质,可以在UI场景中丝滑地实现多向滑动效果,利于提升UI交互体验。
第一方面,本申请实施例提供了一种滑动方法,包括:
监控当前屏幕上的显示窗口,得到目标窗口;
获取所述目标窗口对应的第一滑动方向;
若所述目标窗口为路口对象,则根据所述第一滑动方向获取第二滑动方向,其中,所述第二滑动方向与所述第一滑动方向垂直;
控制所述目标窗口沿所述第一滑动方向或所述第二滑动方向移动。
在本申请实施例中,利用LVGL实现人机交互的情况下,实时检测并识别当前屏幕上的显示窗口,并确定其中的目标窗口,获得目标窗口对应的第一滑动方向,这可能是水平或垂直的移动方向,如果目标窗口被标识为路口对象,系统将执行额外的步骤,针对路口对象,系统将获取第二滑动方向,该方向与第一滑动方向垂直,最后,根据第一滑动方向或第二滑动方向之一,控制目标窗口在屏幕上进行移动。换言之,就是利用LVGL识别出路口对象,在路口对象位置可以实现LVGL的在不同方向位置的滑动,因此通过上述方法,可以在UI场景中丝滑地实现多向滑动效果,利于提升UI交互体验。
在第一方面的一种可能的实现方式中,所述方法还包括:
获取所述目标窗口在屏幕中的相对坐标;
若所述目标窗口在屏幕中的相对坐标与屏幕中心的坐标相等,则判定所述目标窗口为所述路口对象;
若所述路口对象的相对坐标与屏幕中心的坐标不相等,则判定所述第一窗口不是所述路口对象。
在本申请实施例中,通过获取相对坐标,系统能够感知目标窗口在屏幕中的具体位置,这有助于更精确地操作窗口,判定目标窗口是否为路口对象,可能触发不同的操作或者决策路径,增加系统的灵活性,确定目标窗口是否在屏幕中心,可以用于识别用户关注的窗口,从而改善用户体验。
在第一方面的一种可能的实现方式中,所述方法还包括:
创建多条滑动链;
分别设置每条所述滑动链对应的第三滑动方向。
在本申请实施例中,通过界面或者命令方式创建多条滑动链,每条链与特定的窗口或操作相关联,对于每条滑动链,用户可以设置第三滑动方向,这可能涉及指定角度或方向向量。创建多条滑动链允许用户定义不同的滑动操作,使系统更加多样化,不同的滑动链可能对应不同的应用场景或窗口操作,增加了系统的适应性和灵活性,通过为每条链设置独立的第三滑动方向,系统可以更加精细地执行不同的操作,有助于提高操作效率。
在第一方面的一种可能的实现方式中,所述方法还包括:
根据所述屏幕的尺寸创建第一窗口;
创建所述第一窗口的至少2个子窗口,得到第二窗口,其中,至少2个所述第二窗口的尺寸之和大于所述第一窗口的尺寸;
根据至少2个所述第二窗口生成所述滑动链。
在本申请实施例中,通过创建第一窗口和多个子窗口,用户可以同时处理多个任务,提高工作效率,确保至少两个第二窗口的尺寸之和大于第一窗口的尺寸,有助于最大限度地利用屏幕空间,滑动链的生成可能使用户能够通过滑动手势或其他方式轻松切换任务,提升用户体验。
在第一方面的一种可能的实现方式中,所述根据至少2个所述第二窗口生成所述滑动链,包括:
对于每个所述第二窗口,创建所述第二窗口的至少2个子窗口,得到第三窗口,其中,至少2个所述第三窗口的尺寸之和大于所述第二窗口的尺寸;
根据至少2个所述第三窗口生成一条所述滑动链。
在本申请实施例中,创建第三窗口使系统具有更深层次的窗口管理能力,适应更为复杂的任务需求,通过生成滑动链,用户可以方便地在不同层级的窗口之间进行切换,提高多任务处理效率,系统的能力自动生成和管理窗口及滑动链,使其更具动态适应性,根据用户操作和需求灵活调整窗口布局,通过滑动链的生成,用户可以通过直观的滑动操作来快速切换和操作窗口,增加系统的易用性。
在第一方面的一种可能的实现方式中,所述分别设置每条所述滑动链对应的第三滑动方向,包括:
设置所述第一窗口的第四滑动方向;
根据所述第四滑动方向设置所述第二窗口的第五滑动方向,其中,所述第四滑动方向与所述第五滑动方向垂直;
根据所述第五滑动方向设置所述第三窗口的第六滑动方向,其中,所述第五滑动方向与所述第六滑动方向垂直。
在本申请实施例中,通过设置不同窗口的不同滑动方向,用户可以在多个维度上进行操作,提高操作的多样性,将每个窗口与其对应的子窗口的滑动方向设定为相互垂直的滑动方向,通过上述方法可以生成多个路口对象,以便实现LVGL多向滑动的效果。
在第一方面的一种可能的实现方式中,所述方法还包括:
为每条所述滑动链设置至少一个路口对象。
在本申请实施例中,用户可以通过系统界面或者命令方式为每条滑动链设置至少一个路口对象,定义其位置和特征,每条滑动链都与至少一个路口对象关联,用户可以指定在滑动到某个特定路口时触发特定操作或切换到相应的窗口,当用户滑动窗口时,系统需要判断当前位置是否到达某个路口对象,如果是,则执行相关操作。通过为滑动链设置至少一个路口对象,系统可以实现更高级别的任务导航和窗口管理,为用户提供更灵活、智能的窗口操作体验。
在第一方面的一种可能的实现方式中,所述方法还包括:
若所述目标窗口不是路口对象,则控制所述目标窗口沿所述第一滑动方向移动。
在本申请实施例中,非路口对象能够滑动但是很可能滑动到的是空白对象,但其实这个对象是不存在的,LVGL可能为了对齐或其他原因创建了。从应用处理来看,滑动到一个不存在的对象是不应该的,因此需要对非路口对象的方向进行限制。通过上述方法,可以提高滑动方法的准确性,避免滑动到空白对象,提高用户体验。
第二方面,本申请实施例提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面中任一项所述的滑动方法。
第三方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面中任一项所述的滑动方法。
第四方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一项所述的滑动方法。
可以理解的是,上述第二方面至第四方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是是本申请施例提供的创建滑动链的流程示意图;
图2是本申请施例提供的滑动链示意图;
图3是本申请施例提供的创建一条滑动链的流程示意图;
图4是本申请施例提供的滑动方法的流程示意图;
图5本申请实施例提供的滑动方法的结构示意意图;
图6是本申请实施例提供的终端设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。
在如POS产品的UI场景变换大多使用手势实现,在使用手势时,由于检测手势需要一定的时间,这就导致页面在变化过程中,会因为这些时间产生一定的卡顿,这在硬件能力有限的情况下尤为明显。使用LVGL中的滑动来代替手势进行UI场景变换将能极大改善用户的UI交互体验。
使用LVGL提供的滑动效果时,如在一个音乐播放应用中,其中包含两个主要界面:音乐列表界面和具体音乐内容界面。通过LVGL或类似的库,我们只能实现垂直或水平滑动,如可以垂直或滑动浏览整个音乐列表,在音乐列表中选择一首歌曲时,他们可以进入音乐内容界面,可以水平滑动以显示该界面选定歌曲的详细信息、歌词等。由此可知,利用LVGL提供的滑动效果时,一般只能实现双向滑动,垂直滑动或水平滑动,而不能三向和四向滑动,这就导致某些场景变换仍然只能使用手势,而手势会导致卡顿。
基于上述相关技术中出现的问题,本申请实施例提供了一种滑动方法,在本申请实施例中,利用LVGL实现人机交互的情况下,实时检测并识别当前屏幕上的显示窗口,并确定其中的目标窗口,获得目标窗口对应的第一滑动方向,这可能是水平或垂直的移动方向,如果目标窗口被标识为路口对象,系统将执行额外的步骤,针对路口对象,系统将获取第二滑动方向,该方向与第一滑动方向垂直,最后,根据第一滑动方向或第二滑动方向之一,控制目标窗口在屏幕上进行移动。换言之,就是利用LVGL识别出路口对象,在路口对象位置可以实现LVGL的在不同方向位置的滑动,因此通过上述方法,可以在UI场景中丝滑地实现多向滑动效果,利于提升UI交互体验。
其中,LVGL是一款开源的嵌入式图像库,专门为嵌入式系统设备。它提供了丰富的图形界面(Graphical User Interface,GUI)功能,可用于开发嵌入式设备上用户界面,其功能特点主要有以下特点:轻量级:LVGL设计精巧,占用内存较小,适用于资源受限的嵌入式系统;灵活性:LVGL支持多种显示设备和输入设备,包括液晶显示屏、触摸屏、鼠标、键盘等。它的灵活性使其适用于各种嵌入式平台;跨平台:LVGL是一个跨平台的图形库,支持多种操作系统和嵌入式系统。这使得开发人员可以在不同平台上共享和重用代码;丰富的图形元素:LVGL提供了丰富的图形元素,如按钮、标签、文本框、图标等,使开发人员能够轻松创建各种用户界面;动画支持:LVGL支持动画效果,可以增强用户界面的交互性和吸引力;主题和样式:LVGL允许开发人员定义和定制界面的主题和样式,以满足特定的设计需求;开源:LVGL以MIT许可证发布,可以免费用于商业和非商业项目,并且允许修改源代码以满足特定需求。
在论述本申请提供的基于LVGL框架实现多向滑动方法之前,首先需要论述方案的准备工作,参见图1,是本申请施例提供的创建滑动链的流程示意图,如图1所示,创建滑动链的过程如下所示:
S101,创建多条滑动链。
在本申请实施例中,滑动链是一种用户界面元素,通常用于通过滑动手势或其他输入方式选择数值范围。在LVGL中,滑动链可以是一组通过手势相互连接的UI元素,这些元素可以是滑动条、列表或其他支持滑动的部件。
利用LVGL库创建滑动链的步骤可以如下:创建滑动链对象:在LVGL中,可以通过调用相应的函数来创建滑动链对象。这包括设置滑动链的父容器、位置、大小等属性;配置滑动链属性:设置滑动链的属性,例如最小值、最大值、初始值、刻度等。这些属性决定了滑动链表示的数值范围以及滑动链的初始状态;添加事件回调函数:为了与用户的交互响应,可以添加事件回调函数。这样,当用户通过滑动链进行交互时,系统会调用相应的回调函数,从而允许开发者在滑动链值发生变化时执行自定义的操作;显示滑动链:将滑动链添加到显示中,确保它在用户界面上可见;处理用户输入:在事件回调函数中,开发者可以获取用户输入,如滑动链的当前值,以便进行相应的处理。
示例性的,参见图2,是本申请施例提供的滑动链示意图,如图2所示,首先创建4个对象(示例),分别是对象1、对象2、对象3、对象4,4个对象组成了1条垂直滑动链。每个对象里又分别创建4个子对象,组成另外4条滑动链。
通过上述步骤可以在嵌入式系统中实现多个滑动链,使用户能够通过滑动手势或其他输入方式选择特定的数值。滑动链常用于调整设置、音量控制等场景,提供了直观且易用的用户交互方式。
在一个实施例中,参见图3,是本申请施例提供的创建一条滑动链的流程示意图,如图3所示,步骤S101创建每条滑动链的过程包括:
S201,根据所述屏幕的尺寸创建第一窗口。
在本申请实施例中,在GUI设计中,窗口是一个独立的可视区域,用于显示应用程序的内容。窗口是用户界面的基本组件之一,它可以包含各种控件和元素,如文本、按钮、图像等,用于与用户进行交互。
创建一条滑动链的过程中,首先需要在LVGL中根据屏幕的尺寸创建第一窗口的一种实现方式可以为,初始化LVGL:在开始任何界面创建之前,需要初始化LVGL库。这包括调用初始化函数以设置LVGL的基本参数和配置;创建屏幕对象:使用LVGL的函数创建表示整个屏幕的对象(第一窗口)。这通常是一个窗口对象,可以通过设置大小和位置来匹配实际屏幕的尺寸;配置窗口属性:设置窗口的属性,如背景颜色、边框样式等。这些属性可以根据设计需求进行调整。
S202,创建所述第一窗口的至少2个子窗口,得到第二窗口,其中,至少2个所述第二窗口的尺寸之和大于所述第一窗口的尺寸。
在本申请实施例中,上述创建的第一窗口,这是整个界面的主窗口,可以容纳其他的子窗口和控件。使用LVGL函数,在第一窗口中创建至少两个子窗口。每个子窗口可以有不同的大小和位置,以适应整体设计,选择至少两个子窗口,确保它们的尺寸之和大于第一窗口的尺寸。这可以通过合理设置子窗口的大小和位置来实现。利用计算得到的尺寸信息,在第一窗口中创建第二窗口。第二窗口可以覆盖选定的子窗口,形成一个新的布局,利用LVGL函数,在第二窗口中添加滑动链对象。配置滑动链的属性,例如最小值、最大值、初始值等,为了响应用户与滑动链的交互,可以在滑动链对象上添加事件回调函数。这样可以在滑动链的值发生变化时执行自定义的操作。由于第二窗口为第一窗口的子窗口,因此,第一窗口可以为第二窗口的父对象。
通过上述步骤,可以在嵌入式系统中创建一个包含多个子窗口和滑动链的界面。这样的界面结构可以提供更丰富的用户体验,使用户能够在不同的子窗口中进行交互。
S203,根据至少2个所述第二窗口生成所述滑动链。
在本申请实施例中,利用LVGL库的相应函数,在每个需要滑动链的第二窗口中创建滑动链对象。这通常包括指定滑动链的位置、大小和样式,针对每个滑动链对象,设置相应的属性,例如最小值、最大值、初始值、刻度等。这些属性决定了滑动链的行为和外观,对于每个第二窗口中的滑动链,确定它们在界面中的具体作用范围。这包括确定滑动链所控制的数值范围,以及滑动链的影响范围,为每个滑动链对象添加事件回调函数,以便在滑动链的值发生变化时执行相应的操作。这可以包括更新界面上的其他元素、触发特定事件等,确保在配置和设置滑动链属性之后,刷新显示以确保滑动链在第二窗口中正确渲染。
示例性的,如上述图2所示的R相当于第一窗口,其中,对象1、对象2、对象3、对象4(示例给出4个对象)相当于为四个第二窗口,四个第二窗口可以生成一条滑动链。
过以上步骤,可以在至少两个第二窗口中成功生成滑动链。这样,用户可以在这些窗口中通过滑动链进行交互,选择特定的数值或触发相关操作。这种设计提供了更灵活的界面,适用于需要用户调整参数或进行选择的场景。
在一个实施例中,步骤S303包括:
对于每个所述第二窗口,创建所述第二窗口的至少2个子窗口,得到第三窗口,其中,至少2个所述第三窗口的尺寸之和大于所述第二窗口的尺寸;根据至少2个所述第三窗口生成一条所述滑动链。
在本申请实施例中,在每个第二窗口中创建多个子窗口即第三窗口,其创建方法与上述实施例中创建第二窗口的过程是一样的,在此过程中,第二窗口相当于第三窗口的父对象,相当于多层嵌套。
示例性的,如上图2所示的对象1-1、对象1-2、对象1-3、对象1-4为对象1(第二窗口)的第三窗口,对象2-1、对象2-2、对象2-3、对象2-4为对象2(第二窗口)的第三窗口,依次类推……。
上述方法中,创建第三窗口使系统具有更深层次的窗口管理能力,适应更为复杂的任务需求,通过生成滑动链,用户可以方便地在不同层级的窗口之间进行切换,提高多任务处理效率,系统的能力自动生成和管理窗口及滑动链,使其更具动态适应性,根据用户操作和需求灵活调整窗口布局,通过滑动链的生成,用户可以通过直观的滑动操作来快速切换和操作窗口,增加系统的易用性。
S102,分别设置每条所述滑动链对应的第三滑动方向。
在本申请实施例中,首先,确定每条滑动链在每个窗口中的具体作用范围。这包括确定滑动链所控制的数值范围,以及滑动链的影响范围;考虑每个窗口的布局和排列方式。了解滑动链在布局中的位置,以确定其滑动方向。例如,如果滑动链位于垂直排列的区域,可能更适合设置垂直方向的滑动。考虑用户的习惯和期望。通常,垂直方向的滑动链用于控制垂直参数,而水平方向的滑动链用于控制水平参数。这有助于使用户界面更直观和易于理解。利用LVGL库的函数,为每条滑动链设置相应的滑动方向。可以选择水平、垂直或其他定制的方向,以满足应用程序的需求。举例来说,如果滑动链用于调整音量,可能选择垂直方向,以模拟音量的上下调整。如果滑动链用于调整亮度,则可能选择水平方向,模拟亮度的左右调整。
上述方法中,通过界面或者命令方式创建多条滑动链,每条链与特定的窗口或操作相关联,对于每条滑动链,用户可以设置第三滑动方向,这可能涉及指定角度或方向向量。创建多条滑动链允许用户定义不同的滑动操作,使系统更加多样化,不同的滑动链可能对应不同的应用场景或窗口操作,增加了系统的适应性和灵活性,通过为每条链设置独立的第三滑动方向,系统可以更加精细地执行不同的操作,有助于提高操作效率。
在一个实施例中,步骤S102包括:
设置所述第一窗口的第四滑动方向;根据所述第四滑动方向设置所述第二窗口的第五滑动方向,其中,所述第四滑动方向与所述第五滑动方向垂直;根据所述第五滑动方向设置所述第三窗口的第六滑动方向,其中,所述第五滑动方向与所述第六滑动方向垂直。
在本申请实施例中,为了实现LVGL三向和四向滑动效果,需要对各个滑动链的滑动方向进行限制。一般情况下,滑动链的方向为垂直或者水平的,要想让滑动链中的对象实现多向滑动,需要在既能水平滑动又能垂直滑动的位置实现,因此可以对每条滑动链的方向进行限制,使其滑动的方向相互垂直,以实现LVGL三向和四向滑动效果。
限制滑动链的一种实现方式为:将第一窗口的排列方向设置为水平排列(水平滑动),则需要将第二窗口的排列方向设定为与其父对象(第一窗口)的方向相反,为垂直排列(垂直滑动)。由于第二窗口的滑动方向为垂直滑动,其为第三窗口的父对象,则将第三窗口的排列方向设置为水平排列(水平滑动)依次排列……,根据业务需要可以嵌套很多层。
限制滑动链的一种另实现方式为:将第一窗口的排列方向设置为垂直排列(垂直滑动),则需要将第二窗口的排列方向设定为与其父对象(第一窗口)的方向相反,为水平排列(水平滑动)。由于第二窗口的滑动方向为水平滑动,其为第三窗口的父对象,则将第三窗口的排列方向设置为垂直排列(垂直滑动)依次排列……,根据业务需要可以嵌套很多层。
上述方法中,通过设置不同窗口的不同滑动方向,用户可以在多个维度上进行操作,提高操作的多样性,将每个窗口与其对应的子窗口的滑动方向设定为相互垂直的滑动方向,通过上述方法可以生成多个路口对象,以便实现LVGL多向滑动的效果。
在一个实施例中,所述方法还包括:
为每条所述滑动链设置至少一个路口对象。
在本申请实施例中,针对每一对相互垂直的滑动链,设置至少一个垂直交叉的路口对象,使用LVGL库的函数,将创建的垂直交叉路口对象添加到相应的滑动链中。确保它们与滑动链正确关联,针对每个垂直交叉的路口对象,配置其属性以反映其在界面中的作用。可以设置文本、图标、颜色等属性,为每个垂直交叉的路口对象添加事件回调函数。确保在用户与路口对象交互时,执行相应的操作,以保持滑动链之间的关联。例如,如果有两条垂直的滑动链,一条用于调整垂直参数,另一条用于调整水平参数,可以在它们的交叉点添加一个按钮,表示同时调整垂直和水平参数。这个按钮就是垂直交叉的路口对象。
示例性的,如上图2所示的可以将第三窗口对象1-2、对象2-3、对象3-1、对象4-1等设为路口对象。其余的为非路口对象。
上述方法中,用户可以通过系统界面或者命令方式为每条滑动链设置至少一个路口对象,定义其位置和特征,每条滑动链都与至少一个路口对象关联,用户可以指定在滑动到某个特定路口时触发特定操作或切换到相应的窗口,当用户滑动窗口时,系统需要判断当前位置是否到达某个路口对象,如果是,则执行相关操作。通过为滑动链设置至少一个路口对象,系统可以实现更高级别的任务导航和窗口管理,为用户提供更灵活、智能的窗口操作体验。
在一个实施例中,参见图4,是本申请施例提供的滑动方法的流程示意图,如图4所示,作为示例而非限定,所述方法包括:
S301,监控当前屏幕上的显示窗口,得到目标窗口。
在本申请实施例中,在本申请实施例中,为每个滑动链的路口对象添加刷新监控事件,并定义触发刷新监控事件的条件。刷新监控事件是指在特定条件下触发的事件,其目的是为了更新或刷新与之关联的元素或对象的状态,当滑动链的数值发生变化时,可以触发刷新监控事件,以更新与之关联的元素的显示或执行相应的操作。对于每个滑动链的路口对象,设置刷新监控事件。这可以通过为每个路口对象注册回调函数来实现,确保当目标窗口变化时,相应的刷新操作被触发。
在刷新监控事件的回调函数中,通过LVGL提供的函数获取当前屏幕上显示的窗口,对显示窗口进行识别,此显示窗口为用户正在与之交互的窗口,或者具有特定标识符的窗口。在对显示窗口进行识别后检查当前显示的窗口是否为目标窗口。如果是,执行相应的刷新操作。
S302,获取所述目标窗口对应的第一滑动方向。
在本申请实施例中,首先,确定当前所使用的滑动链的方向,滑动链可以是水平的(从左到右或从右到左)或垂直的(从上到下或从下到上),然后根据滑动链的方向确定目标窗口的第一滑动方向,目标窗口的滑动方向与滑动链的方向一致。
S303,若所述目标窗口为路口对象,则根据所述第一滑动方向获取第二滑动方向,其中,所述第二滑动方向与所述第一滑动方向垂直。
在本申请实施例中,在滑动事件中,实时检测路口对象是否被滑动到,即判定当前显示的目标窗口是否为路口对象,这可以通过LVGL接口提供的位置信息或状态来实现。根据检测到的路口对象的位置信息,判断是否滑动到了路口对象上。如果检测到路口对象在滑动链上,则执行解除滑动限制的操作;否则,执行开启滑动限制的操作。其中,执行解除滑动限制的操作为根据目标窗口的第一方向来获取第二滑动方向。
示例性的,如果目标窗口为路口对象,其所在滑动链的方向为水平滑动(第一滑动方向),则目标窗口的父对象为垂直滑动,则解除父对象对路口对象的滑动限制以获取第二滑动方向(父对象的滑动方向)。
S304,控制所述目标窗口沿所述第一滑动方向或所述第二滑动方向移动。
在本申请实施例中,在目标窗口为路口对象时,可以实现LVGL的三向和四向滑动效果。LVGL提供了处理滑动事件的回调函数。需要为目标窗口注册这些回调函数,以便在滑动发生时得到通知。在相应的代码中实现滑动事件回调函数。通过该回调函数,可以获取滑动的方向信息,并根据需要执行相应的操作。如果用户在水平方向滑动,可以调用函数来水平移动目标窗口,如果用户在垂直方向滑动,可以调用函数来垂直移动目标窗口,在滑动事件回调函数中,根据滑动方向执行窗口移动的逻辑。这可能涉及到调整窗口的坐标或偏移量等。
在一种实现方式中,如上述示例图2中,若当前目标窗口为对象1-2(路口对象),其所在滑动链的滑动方向为水平方向,当解除其父对象对路口对象1-2的限制时,其可以进行水平和垂直方向的滑动,由于路口对象1-2所在的滑动链为水平滑动且为垂直方向上的第一条滑动链,由图可知,其可以进行水平方向上的向左滑动和向右滑动,以及垂直方向的向下滑动,则实现了LVGL的三向滑动效果。
在另一种实现方式中,如上述示例图2中,若当前目标窗口为对象2-3(路口对象),其所在滑动链的滑动方向为水平方向,当解除其父对象对路口对象2-3的限制时,其可以进行水平和垂直方向的滑动,由于路口对象2-3所在的滑动链为水平滑动,由图可知,其可以进行水平方向上的向左滑动或向右滑动,以及垂直方向的向下或向上滑动,则实现了LVGL的四向滑动效果。
上述方法中,利用LVGL实现人机交互的情况下,实时检测并识别当前屏幕上的显示窗口,并确定其中的目标窗口,获得目标窗口对应的第一滑动方向,这可能是水平或垂直的移动方向,如果目标窗口被标识为路口对象,系统将执行额外的步骤,针对路口对象,系统将获取第二滑动方向,该方向与第一滑动方向垂直,最后,根据第一滑动方向或第二滑动方向之一,控制目标窗口在屏幕上进行移动。换言之,就是利用LVGL识别出路口对象,在路口对象位置可以实现LVGL的在不同方向位置的滑动,因此通过上述方法,可以在UI场景中丝滑地实现多向滑动效果,利于提升UI交互体验。
在一个实施例中,所述方法还包括:
获取所述目标窗口在屏幕中的相对坐标;若所述目标窗口在屏幕中的相对坐标与屏幕中心的坐标相等,则判定所述目标窗口为所述路口对象;若所述路口对象的相对坐标与屏幕中心的坐标不相等,则判定所述第一窗口不是所述路口对象。
在本申请实施例中,为各滑动链的路口对象添加刷新监控事件,当对象刷新时会持续触发该事件,回调处理如下:
获取该对象的相对坐标a,设屏幕为w*h,则屏幕中心的坐标为(w/2,h/2),判断a的坐标是否与屏幕中心坐标相等,相等则说明此时滑动到了该对象上,若滑动到了路口对象上,调用LVGL接口,解除其父对象所在的滑动链的滑动限制,若未滑动到路口对象上,则开启其父对象所在的滑动链的滑动限制。
上述方法中,通过获取相对坐标,系统能够感知目标窗口在屏幕中的具体位置,这有助于更精确地操作窗口,判定目标窗口是否为路口对象,可能触发不同的操作或者决策路径,增加系统的灵活性,确定目标窗口是否在屏幕中心,可以用于识别用户关注的窗口,从而改善用户体验。
在一个实施例中,所述方法还包括:
若所述目标窗口不是路口对象,则控制所述目标窗口沿所述第一滑动方向移动。
在本申请实施例中,目标窗口不是“路口对象”时,可能是指目标窗口不是一个具有交叉点或交汇功能的对象。在这种情况下,系统可以根据用户的滑动操作,主要关注滑动的第一方向,并在用户沿该方向滑动时调整目标窗口的位置。具体而言,如果用户开始滑动的方向是系统定义的第一滑动方向,系统将解释该操作并执行相应的移动。这涉及到检测用户手势的方向、计算目标窗口应该沿着该方向移动的距离,并将目标窗口调整到新的位置。
上述方法中,非路口对象能够滑动但是很可能滑动到的是空白对象,但其实这个对象是不存在的,LVGL可能为了对齐或其他原因创建了。从应用处理来看,滑动到一个不存在的对象是不应该的,因此需要对非路口对象的方向进行限制。通过上述方法,可以提高滑动方法的准确性,避免滑动到空白对象,提高用户体验。
图5本申请实施例提供的滑动方法的结构示意意图。如图6所示,其利用LVGL实现三向和四向滑动效果的步骤如下:
S501:监控显示窗口。
在本申请中,在创建完多条相互垂直的滑动链之后,在POS产品的UI场景中可以进行窗口的滑动,监控屏幕上的显示窗口,得到目标窗口。
S502:判断目标窗口是否为路口对象。
在本申请中,首先需要获取当前滑动的目标窗口,并判断目标窗口是否为路口对象。若是则执行步骤S503,否则执行步骤S506。
S503:允许目标窗口进行多向滑动。
在本申请中,若判定当前滑动的窗口为路口对象,则允许在当前位置向不同的方向滑动,例如,若当前滑动方向为垂直方向,则允许其滑动方向可以向水平方向滑动,若当前滑动方向为水平方向(向左滑动或向右滑动),则允许其滑动方向可以向垂直方向滑动(向上滑动或向下滑动),因此可以实现LVGL三向和四向的滑动效果。
S504:判断目标窗口是否滑动到其他滑动链。
在本申请中,当目标窗口为路口对象并进行多向滑动后,判断目标窗口是否滑动到了与当前滑动链不同的滑动链,若是则执行步骤S505,若不是则执行步骤S507。
S505:目标窗口跳转到其他滑动链。
在本申请中,当判定目标窗口滑动到其他滑动链时直接将对象跳转至对应的滑动链。
S506:禁止目标窗口进行多向滑动。
在本申请中,若判定当前的目标窗口不是路口对象,则禁止目标窗口向与所述滑动链的滑动方向不一致的方向移动,即只能沿当前滑动链的位置滑动,不能多向滑动。
S507:目标窗口在所属滑动链内滑动。
在本申请中,若所述目标窗口不是路口对象,则目标窗口只能沿所属滑动链的滑动方向滑动,如若所属滑动链为水平方向,则目标窗口只能在水平方向上向左或向右滑动。
需要注意的是,具体的实现方式可能因使用的UI框架或库而有所不同。在LVGL中,可以通过注册滑动事件回调函数来捕获用户的滑动操作,然后在回调函数中处理相应的移动逻辑。这种方式允许据滑动的方向执行不同的操作,以达到控制目标窗口沿第一滑动方向移动的效果。
S508:结束。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图6是本申请实施例提供的终端设备的结构示意图。如图6所示,该实施例的终端设备6包括:至少一个处理器60(图6中仅示出一个)处理器、存储器61以及存储在所述存储器31中并可在所述至少一个处理器60上运行的计算机程序62,所述处理器60执行所述计算机程序62时实现上述任意各个滑动方法实施例中的步骤。
所述终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,图6仅仅是终端设备6的举例,并不构成对终端设备6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器60可以是中央处理单元(Central Processing Unit,CPU),该处理器60还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器61在一些实施例中可以是所述终端设备6的内部存储单元,例如终端设备6的硬盘或内存。所述存储器61在另一些实施例中也可以是所述终端设备3的外部存储设备,例如所述终端设备6上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器61还可以既包括所述终端设备6的内部存储单元也包括外部存储设备。所述存储器61用于存储操作系统、应用程序、引导装载程序(Boot Loader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行时实现可实现上述各个方法实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种多向滑动方法,其特征在于,所述方法包括:
监控当前屏幕上的显示窗口,得到目标窗口;
获取所述目标窗口对应的第一滑动方向;
若所述目标窗口为路口对象,则根据所述第一滑动方向获取第二滑动方向,其中,所述第二滑动方向与所述第一滑动方向垂直;
控制所述目标窗口沿所述第一滑动方向或所述第二滑动方向移动。
2.如权利要求1所述的多向滑动方法,其特征在于,所述方法还包括:
获取所述目标窗口在屏幕中的相对坐标;
若所述目标窗口在屏幕中的相对坐标与屏幕中心的坐标相等,则判定所述目标窗口为所述路口对象;
若所述路口对象的相对坐标与屏幕中心的坐标不相等,则判定所述第一窗口不是所述路口对象。
3.如权利要求1所述的多向滑动方法,其特征在于,所述方法还包括:
创建多条滑动链;
分别设置每条所述滑动链对应的第三滑动方向。
4.如权利要求3所述的多向滑动方法,其特征在于,所述方法还包括:
根据所述屏幕的尺寸创建第一窗口;
创建所述第一窗口的至少2个子窗口,得到第二窗口,其中,至少2个所述第二窗口的尺寸之和大于所述第一窗口的尺寸;
根据至少2个所述第二窗口生成所述滑动链。
5.如权利要求4所述的多向滑动方法,其特征在于,所述根据至少2个所述第二窗口生成所述滑动链,包括:
对于每个所述第二窗口,创建所述第二窗口的至少2个子窗口,得到第三窗口,其中,至少2个所述第三窗口的尺寸之和大于所述第二窗口的尺寸;
根据至少2个所述第三窗口生成一条所述滑动链。
6.如权利要求3所述的多向滑动方法,其特征在于,所述分别设置每条所述滑动链对应的第三滑动方向,包括:
设置第一窗口的第四滑动方向;
根据所述第四滑动方向设置第二窗口的第五滑动方向,其中,所述第四滑动方向与所述第五滑动方向垂直;
根据所述第五滑动方向设置第三窗口的第六滑动方向,其中,所述第五滑动方向与所述第六滑动方向垂直。
7.如权利要求3所述的多向滑动方法,其特征在于,所述方法还包括:
为每条所述滑动链设置至少一个路口对象。
8.如权利要求1所述的多向滑动方法,其特征在于,所述方法还包括:
若所述目标窗口不是路口对象,则控制所述目标窗口沿所述第一滑动方向移动。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311799542.5A CN117762299A (zh) | 2023-12-25 | 2023-12-25 | 多向滑动方法、终端设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311799542.5A CN117762299A (zh) | 2023-12-25 | 2023-12-25 | 多向滑动方法、终端设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117762299A true CN117762299A (zh) | 2024-03-26 |
Family
ID=90321749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311799542.5A Pending CN117762299A (zh) | 2023-12-25 | 2023-12-25 | 多向滑动方法、终端设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117762299A (zh) |
-
2023
- 2023-12-25 CN CN202311799542.5A patent/CN117762299A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109164964B (zh) | 内容分享方法、装置、终端及存储介质 | |
JP6659644B2 (ja) | 応用素子の代替的グラフィック表示の事前の生成による入力に対する低レイテンシの視覚的応答およびグラフィック処理ユニットの入力処理 | |
EP2686758B1 (en) | Input device user interface enhancements | |
US10963136B2 (en) | Highlighting of objects on a display | |
US20120266079A1 (en) | Usability of cross-device user interfaces | |
US9830014B2 (en) | Reducing control response latency with defined cross-control behavior | |
KR20120045744A (ko) | 체험형 학습 콘텐츠 저작 장치 및 방법 | |
KR20190044702A (ko) | 채널 바의 관리 | |
CN113778272A (zh) | 轻应用的分屏处理方法、设备及电子设备 | |
GB2314245A (en) | Graphical user interface | |
US10853152B2 (en) | Touch application programming interfaces | |
Seidelin | HTML5 games: creating fun with HTML5, CSS3 and WebGL | |
KR20140117979A (ko) | 터치스크린을 이용한 항목 선택 방법 및 시스템 | |
US11093117B2 (en) | Method for controlling animation's process running on electronic devices | |
CN117762299A (zh) | 多向滑动方法、终端设备及计算机可读存储介质 | |
Kozminski | Windows Presentation Foundation (WPF) technology meets the challenges of operator interface design in automatic test systems | |
KR102144342B1 (ko) | 복수의 오브젝트들을 포함하는 사용자 인터페이스의 상태를 변경하는 전자 장치 및 그의 동작 방법 | |
CN111813408A (zh) | 视图显示处理方法、装置、终端设备及存储介质 | |
CN117762300A (zh) | 循环滑动方法、终端设备及计算机可读存储介质 | |
Zhou et al. | IslayTouch: an educational visual programming environment based on state-transition diagrams that runs on android devices | |
KR20140019914A (ko) | 전자 장치 및 전자 장치의 디스플레이 제어 방법 | |
Takoordyal et al. | User Interface | |
CN116077935A (zh) | 游戏中的地块搜索方法、装置和电子设备 | |
CN115439638A (zh) | 服装展示方法、装置、电子设备及存储介质 | |
CN116943180A (zh) | 一种控件交互方法及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |