具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的目的之一是提供一种能够快捷切换页面的方案,可以应用于各种打开多个页面、且需要在多个页面之间切换的应用场景。例如,假设用户在手机(移动终端)中启动邮件App,且邮件App根据用户的操作先后展示主页面、邮件1的页面和邮件2的页面,邮件App展示各页面的先后顺序如图1所示,在图1中,当前展示的页面为邮件2的页面,主页面和邮件1的页面被邮件2的页面覆盖。当用户需要邮件App再次展示主页面(该主页面与邮件2的页面不相邻)以进行相关操作时,邮件App需要从当前展示的邮件2的页面切换到主页面,展示该主页面。
需要说明的是,两个页面是否相邻是指两个页面是否存在直接的覆盖或被覆盖的关系。比如,邮件2的页面覆盖邮件1的页面,邮件1的页面覆盖主页面,则邮件2的页面与主页面之间没有直接的覆盖或被覆盖关系,因此,邮件2与主页面不相邻,但是邮件1的页面直接被邮件2的页面覆盖,且邮件1的页面直接覆盖主页面,显然,邮件1的页面与邮件2的页面和主页面存在直接的覆盖或被覆盖关系,因此,邮件1的页面分别与邮件2的页面和主页面相邻。
可见,上述的主页面与邮件2的页面不相邻,是指主页面与邮件2的页面不存在直接的覆盖或被覆盖的关系。
如果按照现有技术,每一个当前展示页面内容都会压入一个堆栈,堆栈中的页面内容按照页面展示的先后顺序从栈底到栈顶按次序存储,每次需要获取堆栈中的页面内容时,只能获取栈顶存储的页面内容,而不能跳过栈顶获取堆栈的其他存储区域存储的页面内容,这样,如果需要App展示被覆盖的页面时,就需要用户在当前页面上点击回退到前一页的按钮(例如,退回按钮),直到App回退到目标页面时停止点击按钮,也就是说,无法直接从当前页面切换至与该当前页面不相邻的目标页面,这就会导致页面的切换效率较低的问题,同时用户的操作便利性也较低。
上例中,图1所示的主页面、邮件1的页面内容和邮件2的页面内容在堆栈中的存储方式如图2所示,在图2中,最先展示的主页面的页面内容位于栈底,最后展示的邮件2的页面内容位于栈顶,当用户需要邮件App再次展示主页面时,点击当前页面上用于指示邮件App回退到前一页的按钮,邮件App根据该按钮对应的指令,将邮件2的页面内容从栈顶压出,此时,邮件1的页面内容位于栈顶,邮件App获取邮件1的页面内容并展示。由于,当前展示的页面不是主页面,用户还需要再次点击当前页面上的所述按钮,邮件App根据该按钮对应的指令,将邮件1的页面内容从栈顶压出,此时,主页面的页面内容位于栈顶,邮件App获取主页面的页面内容并展示。可见,用户在当前页面上做超过一次的点击按钮的操作,页面才从邮件2的页面切换到主页面,这样,页面的切换效率就较低,同时用户的操作便利性也较低。
图3为本申请实施例提供的页面切换方法,具体包括以下步骤:
S301:接收切换指令。
本申请实施例所述的切换指令中携带有被覆盖页面的页面标识,该切换指令用于指示终端中的操作***或展示页面的App,将该App中当前某个被覆盖页面切换至当前页面展示,被覆盖页面的页面标识携带在该切换指令中。
在本申请实施例中,所述的被覆盖页面,可包括如下类型的页面中的一个或多个:
第一类页面:当前展示的页面(即当前页面)之前打开的页面,即距离打开当前页面的时刻t0最近的历史时刻t1,该历史时刻t1为打开其他页面的时刻,被覆盖的页面(第一类页面)与当前页面的页面级别关系不限,即该被覆盖的页面可以是当前页面的上一级页面,也可以是当前页面的同级页面。
第二类页面:当前展示的页面的上级页面。
例如,若当前页面为邮件3的页面,邮件3的页面覆盖邮件2的页面,邮件2的页面覆盖邮件1的页面,邮件1的页面覆盖主页面,由于邮件1~3的页面为同级页面,主页面为邮件1~3的页面的上一级页面,则该被覆盖的页面可以是主页面(第二类页面)。
第三类页面:当前展示的页面的其他同级页面。
具体的,在上例中,被覆盖的页面可以是邮件3的同级页面邮件2的页面或邮件1的页面,这类型被覆盖页面为第三类页面。
第四类页面:与当前展示的页面属于同一应用的页面。
第五类页面:与当前展示的页面不属于同一应用的页面。
上例中,若主页面和邮件1的页面为邮件App1提供的页面,邮件2和邮件3为邮件App2提供的页面,则被覆盖的页面可以是与当前页面(邮件3的页面)属于同一个应用的邮件2的页面,这类型被覆盖的页面为第四类页面。被覆盖页面还可以是与当前页面(邮件3的页面)不属于同一个应用的主页面或邮件1的页面,这类型被覆盖页面为第五类页面。
所述的同级页面是指用户在上一级页面上的多次不同的操作得到的多个页面,各同级页面仅与上一级页面具有直接的逻辑关系,但是各同级页面之间没有直接的逻辑关系。
本申请实施例所述的切换指令可以是用户在终端中实时输入的语音切换指令(如,“请切换至某被覆盖页面”),也可以是用户在终端展示的页面上输入的文字切换指令。本申请实施例所述的切换指令可以是终端预设的与每一个被覆盖页面对应的切换指令,用户可通过物理按键或软按键(即虚拟按键)的方式输入该切换指令。
则App或操作***可接收用户输入的语音切换指令、文字切换指令等、或可接收用户通过物理按键或软按键的方式输入该切换指令。所述的操作***可包括但不限于:安卓操作***(Android Operating System,Android OS)、苹果操作***(iphone Operating System,iOS)、云操作***等。
在本申请实施例中,App中展示的每一个页面为相互之间具有逻辑关系的用户界面(User Interface,UI)单元,也称为逻辑UI单元,不同的操作***,逻辑UI单元的表现形式不同,例如,逻辑UI单元在Android OS中,由Activity表示,在iOS中,由scene表示,而不是对话框之类的交互控件。逻辑UI单元在Android OS中,可由一个Activity或多个(至少两个)Activity表示,同理,逻辑UI单元在iOS中可由一个或多个scene表示。
则本申请实施例所述的页面内容为包括一个或多个Activity/scene的页面内容。
S302:调整页面标识对应的页面内容在堆栈中的位置,使得该页面内容位于堆栈的栈顶。
本申请实施例以切换指令用于指示App切换页面为例说明。
在申请实施例中,调整页面标识对应的页面内容在堆栈中的位置之前,还包括:存储当前页面的页面内容,且建立当前页面的页面标识、页面内容、页面内容所在的预设存储区域的地址(以下称为存储地址)相互之间的对应关系,以便于App根据页面标识、页面内容、存储地址的对应关系,来调整页面标识对应的页面内容在堆栈中的位置。
具体的,当App监控到当前页面之后,将当前页面的页面内容压入堆栈(预设存储区域),建立该当前页面的页面标识、页面内容、在堆栈中的存储地址的对应关系。为了避免同一个页面内容重复存储,仅将首次展示的页面的页面内容压入堆栈,其中,该首次展示的页面内容是指所述的App启动后,首次展示在屏幕上的某页面的页面内容,也就是说,该首次展示的页面内容为该App启动之后当前还未被覆盖过的页面内容。当该页面内容被其他页面覆盖后又展示时,则该又展示的页面内容不属于首次展示的页面内容。
例如,假设用户启动手机(终端)中安装的某个App,且在该App的主页面(第一个页面)中操作,显示第二页面,然后再次在App的主页面中操作展示第三页面,其中,第二页面和第三页面分别是主页面的下级(即不同级)页面,第二页面和第三页面为同级页面。
则该App可监控当前页面,当先后监控到第一个页面、第二个页面和第三个页面为当前页面时,建立各页面的页面标识依次为:P1、P2和P3,依次将各页面的页面内容1、页面内容2和页面内容3压入存储地址为D1、D2和D3的存储区域,存储有页面内容1、页面内容2和页面内容3的堆栈结构如图4所示,其中,D1对应堆栈的栈底,D3对应堆栈的栈顶,D2对应栈顶和栈底之间的存储区域(以下称为栈中)。进一步的,针对每一个页面,建立该页面的页面标识、页面内容、存储地址之间的对应关系,如表1所示。
页面标识 |
页面内容 |
存储地址 |
P1 |
页面内容1 |
D1 |
P2 |
页面内容2 |
D2 |
P3 |
页面内容3 |
D3 |
表1
在本申请实施例中,位于栈顶的页面内容为当前页面的页面内容,位于栈底和栈中的页面内容为被覆盖页面的页面内容。由图4可知,页面内容3位于栈顶,可知,当前页面的页面内容为页面内容3,当前被覆盖页面的页面内容为页面内容1和页面内容2,且页面内容2覆盖页面内容1。
在本申请实施例中,存储当前页面的页面内容,且建立当前页面的页面标识、页面内容、存储地址之间的对应关系后,若通过步骤S301接收到切换指令时,可以获取该切换指令中的页面标识,该页面标识为被覆盖页面的页面标识,然后调整该页面标识对应的页面内容在堆栈中的位置(即存储地址),使得该页面标识对应的页面内容位于堆栈的栈顶。
调整该页面标识对应的被覆盖页面的页面内容在堆栈中的位置(即存储地址),使得该页面标识对应的页面内容位于堆栈的栈顶,具体的,根据预先建立的页面标识、页面内容、存储地址之间的对应关系,确定切换指令中携带的页面标识对应的存储地址,将堆栈中的页面内容按照后进先出的方式逐一压出,直到压出所述页面标识对应的存储地址存储的页面内容为止;然后将压出的各页面内容再次逐一压入堆栈,其中,切换指令中携带的页面标识对应的页面内容最后一个压入堆栈,使得切换指令中携带的页面标识对应的页面内容位于栈顶。
沿用上例,假设接收到的切换指令中携带的页面标识为P1,则可确定需要从当前展示的页面内容3直接切换到被覆盖上一级的页面的页面内容1。
查找表1可知,页面标识P1对应的页面内容1存储于存储地址D1中,由表4可知,页面内容1位于堆栈的栈底。在调整页面标识P1对应的页面内容1在堆栈中的位置时,将页面内容3、页面内容2和页面内容1依次从图4所示的堆栈中压出,然后,按照一定顺序将各页面内容再次压入堆栈,其中,页面内容1最后一个压入堆栈,堆栈结构如图5所示。由于页面内容1最后一个压入堆栈,因此,该页面内容1位于图5所示的堆栈的栈顶。需要说明的是,在本申请实施例中,除页面内容1之外的其他各页面内容压入堆栈的先后顺序不限,在图5所示的堆栈结构中,页面内容3和页面内容2是按照页面内容3、页面内容2的先后顺序依次压入堆栈的。
S303:展示栈顶的页面内容。
继续沿用上例,将页面内容3、页面内容2、页面内容1先后压入堆栈之后,页面内容1位于堆栈的栈顶,App可直接获取位置调整为栈顶的页面内容1,并展示该页面内容1,此时,页面内容1对应当前页面,页面内容2和页面内容3对应被覆盖页面。
上述页面切换方法是以不同级页面之间切换为例说明的,本申请实施例所述的页面切换,还可以在同级页面之间切换。比如,假设页面内容2被页面内容1覆盖,页面内容1被页面内容3覆盖,则如果想要从当前展示的页面内容3切换至同级页面对应的页面内容2时,只需要在接收到携带页面标识2的切换指令后,调整页面标识2对应的页面内容2在堆栈中的位置,使得该页面内容2位于堆栈的栈顶,且直接展示栈顶的页面内容2。
可见本申请可直接从当前页面切换至与该当前页面不相邻的同级或不同级被覆盖页面,而不需先展示与该当前页面相邻的被覆盖页面,从而可有效提高页面的切换效率。
在本申请实施例中,由于当前页面的页面内容1已经展示过(即页面内容1已经位于堆栈中),因此,App监控到当前页面时,没必要再次将该页面的页面内容1压入堆栈。
上述图3所示的方法中,App或操作***在接收到切换指令后,根据切换指令中携带的页面标识,调整该页面标识对应的页面内容在堆栈中的位置,使得该页面内容位于堆栈的栈顶,堆栈中的其他页面内容位于栈底或栈中,在需要展示页面标识对应的页面时,直接获取位于调整后的堆栈的栈顶的页面内容,将页面内容展示在页面上,可见,在接收到切换指令后展示页面内容之前,不需要用户进行任何操作,App或操作***直接为用户展示被覆盖页面,从而可有效提高页面的切换效率。
此外,若当前展示被覆盖页面时,由于其他页面的页面内容仍然在堆栈中而不是被压出堆栈,因此,其他页面处于被覆盖状态而不是被关闭,这样,当需要再次展示已经展示过的页面时,直接从堆栈中获取页面内容并展示,而不需要再次获取页面内容来展示,从而可进一步有效提高页面的切换效率。
在本申请实施例中,App或操作***可接收用户通过物理按键或软按键的方式输入的切换指令,相比较物理按键,软按键是显示在显示屏上的虚拟图标按键,用户操作时,直观且方便。
因此,在本申请实施例中,优选的,用户通过点击软按键来触发终端发送切换指令。
具体的,所述软按键可以是展示在页面中的导航信息,该导航信息中设置有一个或多个切换选项,每一个切换选项与一个被覆盖页面相对应,用户可通过点击切换选项来触发终端发送切换指令。
则在本申请实施例中,所述方法还包括:在当前展示的页面中展示导航信息,其中,该导航信息中设置有一个或多个切换选项。
本申请实施例所述的多个切换选项,即至少两个切换选项。
可选的,所述的导航信息可以是一个独立的导航窗口,也可以是包括导航信息的导航条。
如图6所示,假设当前展示图4所示的堆栈中的页面内容3对应的页面,则被覆盖页面为页面内容2和页面内容1对应的页面,在当前展示的页面中展示导航窗口,导航窗口中设置有与页面内容2和页面内容1分别对应的切换按钮。
该切换按钮的图标可以为用于表示页面展示先后顺序的图标,如,切换按钮的图标可以是带有数字或字母的圆形或方形按钮,例如,与页面内容2和页面内容1分别对应的切换按钮的图标可以为如图6所示的方形按钮上的2、1。
为了进一步让用户直观的知晓切换选项对应的页面内容,提高用户切换页面的准确性,优选的,切换选项的图标为该切换选项对应的被覆盖页面的标识,该被覆盖页面的标识可以是数字、字母,或者是页面的缩略图等标识。
如图7所示,在上例中,导航窗口中设置有与页面内容2和页面内容1分别对应的切换按钮,导航窗口中左起第一个切换按钮的图标为页面内容1的缩略图,第二个切换按钮的图标为页面内容2的缩略图,用户可根据切换按钮上展示的缩略图,就可以确定该切换按钮对应哪一个页面内容,并准确切换到对应的页面。
在本申请实施例中,可以在展示每一个页面时,可自动展示导航信息,方便用户在需要时根据导航信息切换页面。但是,为了避免用户在不需要切换页面时,导航信息可能会遮挡页面内容,可能会给用户造成不便。
则在本申请实施例中,在当前展示的页面中展示导航信息之前,本申请实施例提供的页面切换方法还包括:
接收导航信息展示指令,则App只有在接收到该导航信息展示指令时,才展示导航信息,从而避免给用户造成不便。
在本申请实施例中,为了避免用户在不需要切换页面时,展示在当前页面上的导航信息(如,导航窗口)可能会遮挡页面内容给用户造成不便,所述方法还包括:
在展示页面标识对应的页面之后,隐藏所述导航信息(如,隐藏导航窗口)。
可选的,该导航信息为一个不占据全屏的浮动信息,当导航信息为导航窗口时,所述导航窗口为一个不占据全屏的浮动窗口。这样,导航窗口一方面不影响用户浏览全屏的页面内容,另一方面用户还可以根据实际需要灵活移动该导航窗口的位置,这样,可有效避免该导航窗口遮挡用户想要获取的页面内容。
在本申请实施例中,接收导航窗口展示指令时,具体可接收用户通过物理按键输入的导航窗口展示指令,该物理按键可以是一个按键,也可以是多个按键,可以是本申请专门设置的按键,也可以是终端上的一些已有功能按键,用户在按下终端上的物理按键时,向App输入导航窗口展示指令。
当物理按键是终端上的一些已有功能按键时,该物理按键可以是电源按键、音量按键、亮度按键等已有功能按键中的至少两个按键的组合,比如,用户同时按下电源按键和音量按键时,App可接收到用户通过电源按键和音量按键输入的导航信息展示指令。
在本申请实施例中,接收导航信息展示指令时,具体还可接收用户通过软按键输入的导航信息展示指令。
在本申请实施例中,页面上展示的软按键可以是具有规则图形的按钮,比如,圆形按钮、方形按钮等,如图7所示,软按键为一个圆形按钮。
所述软按键可以在App展示的各页面超过一个时,在当前展示的页面中展示该软按键,进一步的,在App展示的各页面关闭到仅剩下一个时,隐藏该软按键。可选的,该软按键可靠近页面的边缘显示。
优选的,该软按键可以是一个浮动按钮,这样,用户可以根据需要灵活移动该按钮,从而可有效避免该标识符按钮遮挡用户想要获取的页面内容。
以上为本申请实施例提供的页面切换方法,基于同样的思路,本申请实施例还提供了一种页面切换装置,如图8所示。
图8为本申请实施例提供的页面切换装置,具体包括:
第一接收模块81,用于接收切换指令,所述切换指令中携带有被覆盖页面的页面标识;
调整模块82,用于调整所述页面标识对应的页面内容在堆栈中的位置,使得所述页面标识对应的页面内容位于堆栈的栈顶;
第一展示模块83,用于展示所述栈顶的页面内容。
可选的,所述装置还包括:
监控模块84,用于监控当前展示的页面,将首次展示的各页面的页面内容压入堆栈。
可选的,所述装置还包括:
第二展示模块85,用于在当前展示的页面中展示导航信息,其中,所述导航信息中设置有一个或多个切换选项,每个切换选项对应一个被覆盖页面;
所述第一接收模块具体用于,接收用户通过所述切换选项输入的切换指令。
可选的,所述导航信息为导航窗口,所述导航窗口为不占据全屏的浮动窗口。
可选的,所述装置还包括:
第二接收模块86,用于在当前展示的页面中展示导航信息之前,接收用户通过物理按键输入的导航信息展示指令;
所述装置还包括:第三展示模块87,用于在接收用户通过页面中展示的虚拟按键输入的导航信息展示指令。
可选的,所述装置还包括:
隐藏模块88,用于在展示所述页面标识对应的页面之后,隐藏所述导航信息。
可选的,所述切换选项的图标为该切换选项对应的被覆盖的页面的图标。
可选的,所述被覆盖页面,包括如下中的一个或多个:
当前展示的页面之前打开的页面;
当前展示的页面的上级页面;
当前展示的页面的其他同级页面;
与当前展示的页面属于同一应用的页面;
与当前展示的页面不属于同一应用的页面。
本申请实施例提供的一种页面切换方法及装置,该方法App或操作***在接收到切换指令后,根据切换指令中携带的页面标识,调整该页面标识对应的页面内容在堆栈中的位置,使得该页面标识对应的页面内容位于堆栈的栈顶,堆栈中的其他页面内容位于栈底或栈中,在需要展示页面标识对应的页面时,直接获取位于调整后的堆栈的栈顶的页面内容,将页面内容展示在页面上,可见,在接收到切换指令后展示页面内容之前,不需要用户进行任何操作,App或操作***直接为用户展示被覆盖的页面,方便快捷,从而可有效提高页面的切换效率。
此外,若当前展示被覆盖的页面时,由于其他页面的页面内容仍然在堆栈中而不是被压出堆栈,因此,其他页面处于被覆盖状态而不是被关闭,这样,当需要再次展示已经展示过的页面时,直接从堆栈中获取页面内容并展示,而不是从网络侧获取页面内容来展示,从而可进一步有效提高页面的切换效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。