一种基于Android车机的滚动布局阻尼回弹方法、设备和介质与流程
未命名
10-09
阅读:151
评论:0
一种基于android车机的滚动布局阻尼回弹方法、设备和介质
技术领域
1.本技术涉及android车机的显示效果处理领域,具体而言,涉及一种基于android车机的滚动布局阻尼回弹方法、设备和介质。
背景技术:
2.由于车机的屏幕尺寸不一,页面呈现有时会限制用户的操作空间。在维护车机上的所有应用共用的控件库时发现,对于android原生的各种滚动布局,当滚动到边界时,原生控件会直接打断滚动操作,虽有默认的提示样式但无法跟随车机的主题样式变化。所以在现实的使用场景中,用户对操作滚动到边界误认为系统卡顿或操作失效,造成不好的用户体验。
3.android平台针对这种情况进行优化一般采用可超出滚动的阻尼回弹效果优化用户体验。但目前很多技术方案都是直接针对特定的一类控件进行相应的处理实现了阻尼回弹的效果。若想针对车机上所有应用实现同样的效果,需要对需要支持的recyclerview、listview、gridview、viewpager、scrollview、horizontalscrollview或其他自定义view等分别进行触摸事件的处理。这些实现方式都存在可复用性差、耦合性高、后期维护成本高、容易造成代码冗余等一些问题。
4.因此,本技术提供了一种基于android车机的滚动布局阻尼回弹方法方法,以解决上述技术问题之一。
技术实现要素:
5.本技术的目的在于提供一种基于android车机的滚动布局阻尼回弹方法、设备和介质,能够解决上述提到的至少一个技术问题。
6.具体方案如下:
7.根据本技术的具体实施方式,第一方面,本技术提供一种基于android车机的滚动布局阻尼回弹方法,包括以下步骤:
8.s1、监听目标视图上的触摸事件,当目标视图上消费触摸事件时,对其滚动行为进行判断。
9.s2、进行效果类的判断,若滑动达到目标视图极限时进入效果的逻辑操作进行效果类的判断。
10.s3、进行目标视图逻辑的处理,若其没有滚动到目标视图极限则进行目标视图原定的操作逻辑。
11.优选的,效果类的实现使用基类进行封装实现。
12.优选的,上层选用由装饰器模式对逻辑行为装饰。
13.优选的,利用装饰器模式创建横纵两个方向的装饰器类,实现对横纵两个方向的处理。
14.优选的,装饰器内部通过判断在其滚动方向上是否达到极限触发父类效果的阻尼
回弹效果。
15.优选的,判断视图组件是否达到滚动极限时,分发到使用适配器模式对传入的视图组件进行极限状态的判断与状态获取的适配器中。
16.优选的,通过核心效果类进行绑定,通过设置view的ontouchlistener方法进行触摸事件的绑定处理。
17.优选的,基类根据外部传入的adapter进行原视图滚动边界的判断。
18.根据本技术的具体实施方式,第二方面,本技术提供一种计算设备,包括:包括处理器以及存储器,存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行上述的方法。
19.根据本技术的具体实施方式,第三方面,本技术提供一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行上述的方法。
20.本技术实施例的上述方案与现有技术相比,至少具有以下有益效果:
21.本发明设计了一套优化框架将阻尼回弹效果完全抽离,遵从高内聚、低耦合原则来提高代码的可重用性,避免造成代码冗余。并同时使用多种设计模式进行框架设计,可为多种android视图提供不同的阻尼回弹解决方案进而减少后期维护成本。
22.针对android视图的阻尼回弹效果采用外观设计模式与装饰器设计模式进行设计开发,其与实际的视图类的实现是解耦的。这使得开发人员可以在视图上直接应用效果,同时将它允许保持重要的逻辑代码,如视图循环的完整等。适用于几乎所有的android原生可滚动视图。该优化也允许轻松地调整以便支持自定义视图。
23.优化后,针对不同布局想要支持阻尼回弹效果仅需要在框架内部进行该布局的行为状态判断适配后,直接调用配置代码即可。任何同为继承同一视图类的自定义类或是逻辑判断相同的视图类均可以直接复用其代码。后期可直接维护内部相应逻辑即可,与原视图类的行为逻辑完全隔离。
24.本发明提供了组件包内附加的阻尼回弹滚动互动效果的框架设计优化方案。将整个阻尼回弹的互动效果全部抽离出来完全独立维护,在完全兼容recyclerview、listiview、scrollview或自定义view的同时,还可以支持横纵双方向与提供更简便的效果绑定方式。比如任何view想要集成该动效,仅仅需要调用一句类似register(targetview)方法便可以一部集成。在register内部进行适配器对滚动极限状态的获取与setontoucheventlistener的注册。
附图说明
25.图1为本发明消费事件示意图;
26.图2为本发明代码结构简示图。
具体实施方式
27.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的
所有其它实施例,都属于本技术保护的范围。
28.在本技术实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种。
29.应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
30.应当理解,尽管在本技术实施例中可能采用术语第一、第二、第三等来描述,但这些描述不应限于这些术语。这些术语仅用来将描述区分开。例如,在不脱离本技术实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。
31.取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
32.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的商品或者装置中还存在另外的相同要素。
33.特别需要说明的是,在说明书中存在的符号和/或数字,如果在附图说明中未被标记的,均不是附图标记。
34.下面结合附图详细说明本技术的可选实施例。
35.对本技术提供的实施例,即一种基于android车机的滚动布局阻尼回弹方法的实施例。
36.下面结合图1、图2对本技术实施例进行详细说明。
37.实施例1:
38.本实施例的基于android车机的滚动布局阻尼回弹方法,包括以下步骤:
39.s1、监听目标视图上的触摸事件,当目标视图上消费触摸事件时,对其滚动行为进行判断。
40.s2、进行效果类的判断,若滑动达到目标视图极限时进入效果的逻辑操作进行效果类的判断。
41.s3、进行目标视图逻辑的处理,若其没有滚动到目标视图极限则进行目标视图原定的操作逻辑。
42.优选的,效果类的实现使用基类进行封装实现。
43.优选的,上层选用由装饰器模式对逻辑行为装饰。
44.优选的,利用装饰器模式创建横纵两个方向的装饰器类,实现对横纵两个方向的处理。
45.优选的,装饰器内部通过判断在其滚动方向上是否达到极限触发父类效果的阻尼回弹效果。
46.优选的,判断视图组件是否达到滚动极限时,分发到使用适配器模式对传入的视图组件进行极限状态的判断与状态获取的适配器中。
47.优选的,通过核心效果类进行绑定,通过设置view的ontouchlistener方法进行触摸事件的绑定处理。
48.优选的,基类根据外部传入的adapter进行原视图滚动边界的判断。
49.本发明具体分为以下四个流程:
50.1、核心效果类采用外观设计模式与装饰器设计模式进行封装,向外仅暴露简单的功能方法。
51.2、核心效果类内部维护针对横纵两个方向滚动的装饰类,该两个装饰类分别对不同方向的滑动趋势方向与超出滚动进行处理,具体实现由他们共同继承的基类实现。
52.3、基类将作为主要实现类,其中定义了除原视图组件事件处理逻辑之外的滚动状态,并根据外部传入的adapter进行原视图滚动边界的判断。当检测到原视图滚动到边界,实现目标效果。
53.4、通过setontouchlistener方式绑定在目标视图上,实现了效果的绑定。
54.本发明通过对视图的事件传递逻辑的分发、拦截与消费三个阶段进行分析,应该在消费阶段进行效果类的绑定。因为事件消费优先级为:ontouchlistener.ontouch、ontouchevent、onclicklistener.onclick,所以将完全解耦的效果类进行绑定可以通过初始化时设置目标视图的setontouchlistener方法进行触摸事件的处理。
55.采用这种方式会先进行效果类的判断,再进行原视图逻辑的处理。本方式需要视图明确判断效果滚动方向是否滚动到极限。
56.阻尼回弹的效果是基于触摸事件的内容处理操作。当目标视图上消费触摸事件时,对其滚动行为进行判断。如果其没有滚动到极限则应该进行本身的操作逻辑,当滑动达到其极限时进入效果的逻辑操作。效果对触摸事件的处理分为三个状态:初始状态、超出滚动状态与回滚状态。
57.1、初始状态:在刚进入效果逻辑时,保存此时的触摸事件的位置信息,并进入下一个超出滚动状态。
58.2、超出滚动状态:处理触摸事件,通过之前设置的阻尼系数实现超出滚动的阻尼效果。在监听到触摸事件的action_up时,则进入下一个状态—回滚状态。
59.3、回滚状态:通过配置的动画进行回滚,回滚到初始状态保存的位置信息之后重置为初始状态。
60.由上可知,该效果逻辑与滚动方向耦合度极低,所以效果实现使用基类进行封装实现。上层选用由装饰器模式对逻辑行为装饰。
61.利用装饰器模式创建横纵两个方向的装饰器类,实现对横纵两个方向的处理。装饰器内部通过判断在其滚动方向上是否达到极限触发父类效果的阻尼回弹效果。在判断各类视图组件是否达到滚动极限时,需要分发到使用适配器模式对传入的视图组件的类型如recyclerview、listview、gridview、viewpager、scrollview、horizontalscrollview等进行极限状态的判断与各种状态获取的适配器中。
62.最终可通过核心效果类进行绑定,通过设置view的ontouchlistener方法进行触摸事件的绑定处理。该优化框架可以做到想要实现的视图组件一句代码绑定阻尼滚动效
果。
63.优化后因为效果功能完全抽离,需要集成同一个阻尼回弹效果的视图类,仅简单地通过一次调用绑定方法即可实现效果。
64.本发明设计了一套优化框架将阻尼回弹效果完全抽离,遵从高内聚、低耦合原则来提高代码的可重用性,避免造成代码冗余。并同时使用多种设计模式进行框架设计,可为多种android视图提供不同的阻尼回弹解决方案进而减少后期维护成本。
65.针对android视图的阻尼回弹效果采用外观设计模式与装饰器设计模式进行设计开发,其与实际的视图类的实现是解耦的。这使得开发人员可以在视图上直接应用效果,同时将它允许保持重要的逻辑代码,如视图循环的完整等。适用于几乎所有的android原生可滚动视图。该优化也允许轻松地调整以便支持自定义视图。
66.优化后,针对不同布局想要支持阻尼回弹效果仅需要在框架内部进行该布局的行为状态判断适配后,直接调用配置代码即可。任何同为继承同一视图类的自定义类或是逻辑判断相同的视图类均可以直接复用其代码。后期可直接维护内部相应逻辑即可,与原视图类的行为逻辑完全隔离。
67.本发明提供了组件包内附加的阻尼回弹滚动互动效果的框架设计优化方案。将整个阻尼回弹的互动效果全部抽离出来完全独立维护,在完全兼容recyclerview、listiview、scrollview或自定义view的同时,还可以支持横纵双方向与提供更简便的效果绑定方式。比如任何view想要集成该动效,仅仅需要调用一句类似register(targetview)方法便可以一部集成。在register内部进行适配器对滚动极限状态的获取与setontoucheventlistener的注册。
68.对本技术提供的实施例,即一种计算设备的实施例。
69.下面对本技术实施例进行详细说明。
70.实施例2:
71.本实施例为一种计算设备,包括处理器以及存储器。
72.处理器可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(gpu)、数字信号处理器(dsp)等等。在一些实施例中,处理器可以使用定制的电路实现,例如特定用途集成电路(asic,applicationspecificintegratedcircuit)或者现场可编程逻辑门阵列(fpga,fieldprogrammablegatearrays)。
73.存储器可以包括各种类型的存储单元,例如系统内存、只读存储器(rom),和永久存储装置。其中,rom可以存储处理器或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(dram,sram,sdram,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器可以包括可读和/或写的可移除的存储设备,例如激光唱
片(cd)、只读数字多功能光盘(例如dvd-rom,双层dvd-rom)、只读蓝光光盘、超密度光盘、闪存卡(例如sd卡、minsd卡、micro-sd卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
74.存储器其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行上述的方法。
75.对本技术提供的实施例,即一种非暂时性机器可读存储介质的实施例。
76.下面对本技术实施例进行详细说明。
77.实施例3:
78.本实施例为一种非暂时性机器可读存储介质,(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。
79.以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
技术特征:
1.一种基于android车机的滚动布局阻尼回弹方法,其特征在于,包括以下步骤:s1、监听目标视图上的触摸事件,当目标视图上消费触摸事件时,对其滚动行为进行判断;s2、进行效果类的判断,若滑动达到目标视图极限时进入效果的逻辑操作进行效果类的判断;s3、进行目标视图逻辑的处理,若其没有滚动到目标视图极限则进行目标视图原定的操作逻辑。2.根据权利要求1所述的基于android车机的滚动布局阻尼回弹方法,其特征在于,效果类的实现使用基类进行封装实现。3.根据权利要求2所述的基于android车机的滚动布局阻尼回弹方法,其特征在于,上层选用由装饰器模式对逻辑行为装饰。4.根据权利要求3所述的基于android车机的滚动布局阻尼回弹方法,其特征在于,利用装饰器模式创建横纵两个方向的装饰器类,实现对横纵两个方向的处理。5.根据权利要求4所述的基于android车机的滚动布局阻尼回弹方法,其特征在于,装饰器内部通过判断在其滚动方向上是否达到极限触发父类效果的阻尼回弹效果。6.根据权利要求5所述的基于android车机的滚动布局阻尼回弹方法,其特征在于,判断视图组件是否达到滚动极限时,分发到使用适配器模式对传入的视图组件进行极限状态的判断与状态获取的适配器中。7.根据权利要求6所述的基于android车机的滚动布局阻尼回弹方法,其特征在于,通过核心效果类进行绑定,通过设置view的ontouchlistener方法进行触摸事件的绑定处理。8.根据权利要求2-7任一所述的基于android车机的滚动布局阻尼回弹方法,其特征在于,基类根据外部传入的adapter进行原视图滚动边界的判断。9.一种计算设备,其特征在于:包括处理器以及存储器,存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1-8中任何一项所述的方法。10.一种非暂时性机器可读存储介质,其特征在于:其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1-8中任一项所述的方法。
技术总结
本申请提供一种基于Android车机的滚动布局阻尼回弹方法,包括以下步骤:S1、监听目标视图上的触摸事件,当目标视图上消费触摸事件时,对其滚动行为进行判断。S2、进行效果类的判断,若滑动达到目标视图极限时进入效果的逻辑操作进行效果类的判断。S3、进行目标视图逻辑的处理,若其没有滚动到目标视图极限则进行目标视图原定的操作逻辑。本发明设计了一套优化框架将阻尼回弹效果完全抽离,遵从高内聚、低耦合原则来提高代码的可重用性,避免造成代码冗余。并同时使用多种设计模式进行框架设计,可为多种Android视图提供不同的阻尼回弹解决方案进而减少后期维护成本。方案进而减少后期维护成本。方案进而减少后期维护成本。
技术研发人员:刘核鸣
受保护的技术使用者:一汽(北京)软件科技有限公司
技术研发日:2023.06.06
技术公布日:2023/10/8
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
