一种用于多视图显示的方法、装置和计算机记录介质与流程

文档序号:17600181发布日期:2019-05-07 20:10阅读:135来源:国知局
一种用于多视图显示的方法、装置和计算机记录介质与流程

本公开涉及一种用于多视图显示的方法、装置和计算机记录介质。



背景技术:

在各种客户端中,滚动视图常用于加载超过一页的数据,列表视图则适合于加载相似布局的大量数据。列表视图可包括多个列表项,在实际展示这些列表项的时候,会通过重用机制增加视图复用,减小内存开销。

虽然列表视图具有大量甚至无限加载的优点,但是复杂场景下的页面无法单纯依赖列表视图来实现,纯粹的列表难以实现复杂的交互需求,难以定向渲染某区域的视图,从而用户体验较差。

为了满足复杂场景(例如股票软件中的股票详情功能)下的需求,有时会将该页面总体设置为滚动视图,以便在整个页面中引入大量除了列表视图以外的其他视图或者构件(比如勾选框、富文本等)。在诸如股票软件中的股票详情功能的信息展示量大且交互复杂的场景下,市面中主流做法是不使用列表视图实现。



技术实现要素:

因此,需要一种用于多视图显示的方法和装置来解决上述问题。

根据本公开的第一方案,提供一种用于多视图显示的方法,其由计算机实现,所述方法包括如下步骤:在页面上利用滚动视图用户界面(ui)控件和列表视图ui控件来呈现滚动视图,该滚动视图内以线性布局嵌套有其他视图和包括能够复用的数个子列表视图的列表视图;获取用户对所述页面的滚动操作;基于所述页面的呈现内容和用户的滚动操作,判定所述页面是否会被滚动到只呈现子列表视图;在所述页面会被滚动到只呈现子列表视图的情况下,由所述列表视图ui控件接管对于所述滚动操作的响应,否则,由所述滚动视图ui控件接管对于所述滚动操作的响应。

在一些实施例中,所述列表视图ui构件包括recyclerview控件。

在一些实施例中,在所述线性布局中,所述其他视图布置在所述列表视图的上方。

在一些实施例中,所述数个子列表视图的总高度被预先设定为与显示屏幕的高度相同。

在一些实施例中,在所述线性布局中,在所述其他视图的下方嵌套有数个视图切换器,所述列表视图为至少一个视图切换器切换到的列表视图且设置在所述数个视图切换器下方。

在一些实施例中,在选中的视图切换器切换到的视图并非列表视图的情况下,判定所述页面不会被滚动到只呈现子列表视图。

在一些实施例中,所述方法还包括,在选中的视图切换器切换到列表视图的情况下:在所述页面的顶部呈现所述视图切换器的情况下,如果滚动操作的方向向上,则判定所述页面会被滚动到只呈现子列表视图,否则判定所述页面不会被滚动到只呈现子列表视图。

在一些实施例中,所述方法还包括,在选中的视图切换器切换到列表视图的情况下:

在所述页面的顶部以外的位置呈现所述视图切换器的情况下,判定所述页面不会被滚动到只呈现子列表视图。

根据本公开的第二方案,提供一种用于多视图显示的装置,所述装置包括:呈现模块,其配置为在页面上利用滚动视图用户界面(ui)控件和列表视图ui控件来呈现滚动视图,该滚动视图内以线性布局嵌套有其他视图和包括能够复用的数个子列表视图的列表视图;获取模块,其配置为获取用户对所述页面的滚动操作;判定模块,其配置为:基于所述页面的呈现内容和用户的滚动操作,判定所述页面是否会被滚动到只呈现子列表视图;接管模块,其配置为:在所述页面会被滚动到只呈现子列表视图的情况下,由所述列表视图ui控件接管对于所述滚动操作的响应,否则,由所述滚动视图ui控件接管对于所述滚动操作的响应。

根据本公开的第三方案,提供一种非暂时性的计算机记录介质,其上存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如下步骤:在页面上利用滚动视图用户界面(ui)控件和列表视图ui控件来呈现滚动视图,该滚动视图内以线性布局嵌套有其他视图和包括能够复用的数个子列表视图的列表视图;获取用户对所述页面的滚动操作;基于所述页面的呈现内容和用户的滚动操作,判定所述页面是否会被滚动到只呈现子列表视图;在所述页面会被滚动到只呈现子列表视图的情况下,由所述列表视图ui控件接管对于所述滚动操作的响应,否则,由所述滚动视图ui控件接管对于所述滚动操作的响应。

根据本公开的各种实施例的用于多视图显示的方法和装置,在用户意图接着在列表视图的子列表视图范围内滑动浏览的情况下,由能够复用所述数个子列表视图的所述列表视图ui控件来接管对于所述滚动操作的响应,从而可以迅速、低计算开销且持续地加载大量数据;而在用户意图接着浏览其他视图时,由所述滚动视图ui控件接管对于所述滚动操作的响应,从而满足用户对更丰富的交互和呈现内容(定向渲染某区域的视图)的需求。

附图说明

在不一定按比例绘制的附图中,相同的附图标记可以描述不同视图中的类似部件。具有字母后缀或不同字母后缀的相同数字可表示类似部件的不同实例。附图通常通过示例而非通过限制的方式示出了各种实施例,并且与说明书以及权利要求书一起用于对所公开的实施例进行说明。在适当的时候,在所有附图中使用相同的附图标记指代同一或相似的部分。这样的实施例是例证性的,而并非旨在作为本方法、装置、或其上存储有用于实现该方法的指令的非暂时性计算机可读介质的穷尽或排他实施例。下面将参照附图描述本发明的示例性实施例的特征、优点以及技术和工业重要性,附图中相同的数字表示相同的元件,并且其中:

图1示出根据本公开第一实施例的用于多视图显示的方法的流程图;

图2(a)示出根据本公开第一实施例的页面的结构图示;

图2(b)示出根据本公开第一实施例的会被滚动到只呈现子列表视图的情况的页面的结构图示;

图3示出根据本公开第二实施例的用于多视图显示的方法的流程图;

图4(a)-图4(d)示出根据本公开第二实施例的在不同情况下的页面的结构图示;

图5示出根据本公开第三实施例的用于多视图显示的装置的模块示意图;

图6示出根据本公开第四实施例的用于多视图显示的装置的结构框图。

具体实施方式

在下文中,技术术语“子列表视图”表示整个列表视图的构件,也可以称为列表视图的列表项。技术表述“只呈现子列表视图”表示不呈现除了子列表视图以外类型的视图,比如常规视图,且包含呈现子列表视图以外还呈现其他非视图的ui要素的情况,比如视图切换器、图片、文字等等。技术表述“呈现所述视图切换器”表示视图切换器ui构件例如viewpager在页面上的具体呈现。

在下文中,将参考附图描述本公开的实施例。图1示出根据本公开实施例的用于多视图显示的方法100的流程图。如图1所示,所述方法100始于步骤101,在页面上利用滚动视图用户界面(ui)控件(例如scrollview控件)和列表视图ui控件来呈现滚动视图,该滚动视图内以线性布局嵌套有其他视图和包括能够复用的数个子列表视图的列表视图。例如,如图2(a)所示,该页面200上也以滚动方式呈现滚动视图201,滚动视图201采用线性布局,其上方呈现有诸如至少一个常规视图的其他视图202,下方也呈现列表视图203中的两个子列表视图204。能够利用诸如recyclerview的列表视图ui控件直接实现列表视图中数个子列表视图的复用,从而在滚动(滑动)翻页时,无需对要呈现的新的子列表视图的全部呈现内容进行重新计算和绘制,而是可以复用所述数个子列表视图中的共用信息和数据,只需替换变化的数据内容(例如文本、颜色等)即可,从而便于在减小内容开销的同时加载大量数据。在一些实施例中,这种复用可以基于诸如listview的列表视图ui控件编写复用程序段来实现。虽然图1中示出了其他视图与列表视图的上下布局作为示例,但本公开不限于此,其他视图与列表视图也可以采用其他的线性布局方式,例如左右,只要用户执行滚动操作时能够区分其他视图与列表视图的位置即可。

接着,在步骤102,获取用户对所述页面的滚动操作,例如,由接管滚动操作的响应的ui构件,例如滚动视图ui构件(如scrollview控件)或者列表视图ui构件(如recyclerview构件),监听所述滚动操作的操作数据,所述操作数据包括操作位置、滚动方向等。

在步骤103,基于所述页面的呈现内容和用户的滚动操作,判定所述页面是否会被滚动到只呈现子列表视图。具体说来,基于页面的呈现内容和用户的滚动操作,预测页面在进一步执行所述滚动操作后是否只呈现子列表视图,如此能够更准确地把握用户执行滚动操作的真实意图,进而提供准确的响应并提升用户体验。如图2(b)所示,在页面200只呈现子列表视图204并且顶部的子列表视图204为列表视图203中的第一条子列表视图的情况下,如果用户执行向上的滚动操作,则意味着其意图浏览后续的子列表视图,但如果用户执行向下的滚动操作,则意味着其意图回到并浏览如图2(a)所示的其他视图202。通过在步骤103考虑到用户执行滚动操作的真实意图,能够在后续步骤104中采取针对性的响应接管。在一些实施例中,所述数个子列表视图的总高度可以被预先设定为与显示屏幕的高度相同,如图2(b)所示,如此可以伪装屏幕有一整个列表。

接着,在步骤104,在所述页面会被滚动到只呈现子列表视图的情况下,由所述列表视图ui控件接管对于所述滚动操作的响应,否则,由所述滚动视图ui控件接管对于所述滚动操作的响应。如此,在用户意图接着在列表视图的子列表视图范围内滑动浏览的情况下,由能够复用所述数个子列表视图的所述列表视图ui控件来接管对于所述滚动操作的响应,从而可以迅速、低计算开销且持续地加载大量数据;而在用户意图接着浏览其他视图时,由所述滚动视图ui控件接管对于所述滚动操作的响应,从而满足用户对更丰富的交互和呈现内容(定向渲染某区域的视图)的需求。作为示例,图2(a)示出了用于股票分析软件的页面,这种类型的软件需要展示大量信息(k线图、重要信息等),并且还需要复杂的交互功能(例如选择查看各种指标),本公开的各种实施例能够满足这种需要兼具大量丰富信息展示和复杂交互功能的软件的页面显示需求,从而显著提升用户体验。

在下文中以安卓系统下的ui控件为例对本公开的各种实施例进行说明,但要知道,本公开的各种实施例也可以利用其它系统例如苹果的ios系统的相应构件来实现。

图3示出根据本公开第二实施例的用于多视图显示的方法300的流程图。可以使用一个滚动视图ui构件(例如scrollview构件)嵌套了一个线性布局(linearlayout),如图4(a)所示,在线性布局中,上面嵌套了至少一个常规视图401作为除了列表视图以外的其他视图,下面嵌套了至少一个视图切换器ui构件(viewpager构件)(其对应区域标记为402),诸如“动态”、“公告”、“资金”等,viewpager构件可以切换到多个其他视图,例如设置在所述数个viewpager构件对应区域下方的列表视图403,该列表视图403可由recyclerview构件实现且在recyclerview构件接管时能够复用数个子列表视图404。

在步骤301,开始滚动。在一些实施例中,可以利用recyclerview构件计算复用的数个子列表视图404的总高度,并使之与整个屏幕的相应显示区域的高度相同,这样可以伪装屏幕有一整个列表。

在步骤302,可以先由scrollview构件监听滚动数据,这部分工作可由scrollview构件的onscrollchanged方法完成。

在步骤303,判定是否到达viewpager控件对应的视图区域402,基于图4(a)中的屏幕布局,鉴于viewpager控件对应的视图区域402与子列表视图404上下紧靠,这也就是判定用户是否滚动到整个页面只有子列表视图404的位置(如图4(b)所示)。如果判定结果为否,则继续返回到步骤302由scrollview构件监听滚动数据。如果判定结果为是,也就是在用户滚动到整个页面只有子列表视图404的场景时,在步骤304,判定viewpager控件对应的视图区域402是否需要滚动接管。此判定与viewpager控件切换到的视图类型相关。在选中的viewpager控件切换到的视图并非列表视图的情况下,如图4(d)所示,判定所述页面不会被滚动到只呈现子列表视图404,从而不需要接管,因此仍然由scrollview响应滚动操作。在选中的viewpager控件切换到列表视图403的情况下,如图4(b)所示,如果滚动操作的方向向上,则判定所述页面会被滚动到只呈现子列表视图404(一定时段后的屏幕图示可参见图4(c)所示),否则判定所述页面不会被滚动到只呈现子列表视图404(一定时段后的屏幕图示可参见图4(a))。在一些实施例中,在选中的viewpager控件切换到列表视图的情况下,如果viewpager控件对应的区域呈现在所述页面的顶部以外的位置,判定所述页面不会被滚动到只呈现子列表视图404。

在判定所述页面会被滚动到只呈现子列表视图404的情况下,则在步骤305,改由recyclerview构件接管对滚动操作的响应,从而设置可以在数个子列表视图404内滑动,由此列表项被充分复用,具有良好的性能,不会增加父容器的性能负担。否则,则回到步骤302,继续由scrollview控件监听滚动数据。

在步骤306,在recyclerview构件接管对滚动操作的响应的情况下,可利用recyclerview构件执行数个子列表视图404内的滑动,例如从例如图4(b)所示的子列表视图404的位置滑动到如图4(c)所示的子列表视图404的位置。此时由recyclerview监听滚动数据,判定是否滚动到顶部(步骤307),可以采用第一条子列表视图404或者viewpager控件对应的区域402作为顶部,如果是,则说明再向上就滑动到scrollview构件对应的区域了,此时将监听交还给scrollview构件由其接管(步骤308),这部分工作可通过调用recyclerview构件的nestedscrollingenabled(false)方法来完成。如此,实现了从父容器滚动到子列表视图以及从子列表视图滚动回到父容器的完整流程。

图5示出根据本公开第三实施例的用于多视图显示的装置500的模块示意图。如图5所示,该装置500包括:呈现模块501,其配置为在页面上利用滚动视图用户界面(ui)控件和列表视图ui控件来呈现滚动视图,该滚动视图内以线性布局嵌套有其他视图和包括能够复用的数个子列表视图的列表视图;获取模块502,其配置为获取用户对所述页面的滚动操作;判定模块503,其配置为:基于所述页面的呈现内容和用户的滚动操作,判定所述页面是否会被滚动到只呈现子列表视图;以及接管模块504,其配置为:在所述页面会被滚动到只呈现子列表视图的情况下,由所述列表视图ui控件接管对于所述滚动操作的响应,否则,由所述滚动视图ui控件接管对于所述滚动操作的响应。

如上所述,图5中所示的模块构成的用于多视图显示的装置500可以经由软件来实现,或者也可以经有软件和硬件的组合(固件)来实现,例如,可以经有智能手机、平板电脑、笔记本电脑、台式计算机、智能手表或者其它可穿戴设备等终端设备的任何一种固件来实现。

图6示出根据本公开实施例的用于多视图显示的装置600的框图。所述装置600包括处理器601和存储器604,所述存储器604可以包括用于多视图显示的程序605,处理器601执行所述程序605时能够实现根据本公开各种实施例的用于多视图显示的方法。例如,图5中所示的各种模块也可以实现为由处理器601执行的软件模块。

附加地,所述存储器604还可以包括常用的操作系统606,例如苹果公司的ios操作系统或者google公司开发的android操作系统。

所述装置除了处理器601和存储器604之外,还需要包括输入/输出602和显示器603。所述输入/输出602被配置为让用户执行输入操作,例如上文中的滚动手势操作;所述显示器603被配置为向用户呈现页面。该显示器603可以是lcd、crt或led显示器。输入/输出602可以包括允许装置600与用户或其他机器和装置通信的一个或多个数字和/或模拟通信装置。例如,输入/输出602可以包括允许用户提供输入的键盘、鼠标和触控屏幕。当输入/输出602采用触控屏幕时,其可以与作为触控屏幕的显示器603整合。

处理器601可以是包括一个或多个通用处理装置的处理装置,诸如微处理器、中央处理单元(cpu)、图形处理单元(gpu)等。处理器601还可以是一个或多个专用处理装置,诸如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp),片上系统(soc)等。如本领域技术人员将理解的,在一些实施例中,处理器601可以是专用处理器,而不是通用处理器。处理器601可以包括一个或多个已知的处理装置,例如来自inteltm制造的pentiumtm、coretm、xeontm或itanium系列的微处理器,由amdtm制造的turiontm、athlontm、semprontm、opterontm、fxtm、phenomtm系列,或由sunmicrosystems制造的各种处理器。处理器601还可以包括图形处理单元,诸如来自的gpu,由nvidiatm制造的系列,由inteltm制造的gma,iristm系列,或由amdtm制造的radeontm系列。处理器601还可以包括加速处理单元,例如由amdtm制造的desktopa-4(6,6)系列,由inteltm制造的xeonphitm系列。另外,术语“处理器”或“图像处理器”可以包括一个以上的处理器,例如,多核设计或多个处理器,每个处理器具有多核设计。处理器601可以执行存储在存储器604中的计算机程序指令序列,以执行本文公开的各种操作、过程和方法。

处理器601可以通信地耦合到存储器604并且被配置为执行存储在其中的计算机可执行指令。存储器604可以包括只读存储器(rom)、闪存、随机存取存储器(ram)、诸如同步dram(sdram)或rambusdram的动态随机存取存储器(dram)、静态存储器(例如,闪存、静态随机存取存储器)等,计算机可执行指令以任何格式存储在其上。计算机程序指令可以由处理器601访问,从rom或者任何其他合适的存储器位置读取,并且加载在ram中以供处理器601执行。

在一些实施例中,网络接口607可以包括网络适配器、电缆连接器、串行连接器、usb连接器、并行连接器、诸如光纤的高速数据传输适配器、usb6.0、闪电、例如wi-fi适配器的无线网络适配器、电信(6g、4g/lte等)适配器。装置600可以通过网络接口607连接到网络。网络可以提供局域网(lan)、无线网络、云计算环境(例如,作为服务的软件、作为服务的平台、作为服务的基础设施等)、客户端-服务器、广域网(wan)等。

本文描述了各种操作或功能,其可以实现为软件代码或指令或者定义为软件代码或指令。这样的内容可以是可以直接执行(“对象”或“可执行”形式)的源代码或差分代码(“delta”或“patch”代码)。软件代码或指令可以存储在计算机可读存储介质中,并且当被执行时,可以使机器执行所描述的功能或操作,并且包括用于以机器(例如,计算装置,电子系统等)可访问的形式存储信息的任何机构,例如可记录或不可记录介质(例如,只读存储器(rom)、随机存取存储器(ram)、磁盘存储介质、光存储介质、闪存装置等)。

这里描述的示例性方法可以至少部分地是机器或计算机实现的。一些示例可以包括用指令编码的计算机可读介质或机器可读介质,所述指令可操作以配置电子装置执行如以上示例中所述的方法。这种方法的实现可以包括软件代码,诸如微代码、汇编语言代码、更高级的语言代码等。各种程序或程序模块可以使用各种软件编程技术来创建。例如,可以使用java、python、c、c++、汇编语言或任何已知的编程语言来设计程序段或程序模块。一个或多个这样的软件部分或模块可以被集成到计算机系统和/或计算机可读介质中。这种软件代码可以包括用于执行各种方法的计算机可读指令。软件代码可以形成计算机程序产品或计算机程序模块的一部分。此外,在一个示例中,软件代码可以诸如在执行期间或其他时间有形地存储在一个或多个易失性、非暂时性或非易失性有形计算机可读介质上。这些有形的计算机可读介质的示例可以包括但不限于硬盘、可移动磁盘、可移动光盘(例如,光盘和数字视频盘)、磁带盒、存储卡或棒、随机存取存储器(ram),只读存储器(rom)等。

此外,尽管在此描述了说明性实施例,但是范围包括具有基于本公开的等效要素、修改、省略、组合(例如,跨各种实施例的方案的组合)、调整或变更的任何和所有实施例。权利要求中的要素将基于权利要求中使用的语言进行宽泛地解释,而不限于本说明书中或在本申请的存续期间描述的示例,这些示例将被解释为非排他性的。此外,所公开的方法的步骤可以以任何方式进行修改,包括通过重新排序步骤或插入或删除步骤。因此,意图仅仅将描述视为例子,真正的范围由以下权利要求及其全部等同范围表示。

以上描述旨在是说明性的而不是限制性的。例如,上述示例(或其一个或多个方案)可以彼此组合使用。本领域普通技术人员在查看以上描述时可以使用其他实施例。而且,在上面的详细描述中,各种特征可以被组合在一起以简化本公开。这不应被解释成意图让不要求保护的公开特征对于任何权利要求而言都是必不可少的。而是,发明主题可以在于比一个公开的实施例的所有特征少的特征组合。因此,以下权利要求由此作为示例或实施例并入到具体实施方式中,其中每个权利要求独立作为单独的实施例,并且可以构想的是,这些实施例可以以各种组合或置换来相互组合。本发明的范围应该参考所附权利要求以及赋予这些权利要求的等同物的全部范围来确定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1