页面加载方法与流程

文档序号:11154350阅读:719来源:国知局
页面加载方法与制造工艺

本发明涉及通信技术领域,尤其涉及一种页面加载方法。



背景技术:

现有技术在开发、设计基于Android终端的Launcher类应用时,都基于ViewGroup进行改造,或直接改造系统原生Launcher。在处理用户左右切换页面时需要严格的处理页面移动距离,造成在页面切换时容易出错,而且在实现页面切换动画时容易出现卡顿和黑屏等现象。因此,在页面切换过程中很少使用动画效果。



技术实现要素:

本发明的目的是针对现有技术的缺陷,提供一种页面加载方法,以Viewpager作为基础控件提出一种简单、交互友好的用户界面加载方案,能够实现页面切换中的动画效果加载,使页面加载方式更加生动,并且加载过程更加流畅。

有鉴于此,本发明实施例提供了一种页面加载方法,用户终端接收用户输入的用户终端启动指令,获取主页面基础控件Viewpager的数据;

以Viewpager为子节点获取根节点View,并根据View确定画面处理机制Canvas;所述Canvas包括矩阵对象Matrix的信息;

获取所述Matrix中存储的对于View的绘画操作的记录;

调用invalidate()函数,对当前页面进行刷新,根据所述绘画操作的记录生成当前页面显示数据;

根据View确定View的子类ViewGroup,并且根据所述invalidate()函数确定所述View或ViewGroup的父视图ParentView;

通过invalidateChild对父视图层层向上循环调用,直到调用到根视图ViewRoot,并根据循环调用的结果生成全部用户可视显示页面的映射关系;

确定响应用户操作的分发事件的处理机制,并将所述处理机制加载到所述映射关系中;

根据所述映射关系,层层向下对显示页面进行绘制;

对部分或各个显示页面设置添加Animator;

ViewRoot调用nativeShowFPS函数将所述绘制的结果canvas传递至本地层进行显示。

具体的,所述方法还包括:

接收用户在所述用户终端输入的页面切换操作指令;

根据所述页面切换操作指令生成相应的第一分发事件,并根据所述第一分发事件的处理机制切换显示页面。

具体的,在所述切换显示页面的过程中,根据Viewpager获取相应的Animator,从而以动画方式加载显示页面。

具体的,所述用户终端接收用户输入的用户终端启动指令具体为:

Android终端接收用户输入的启动指令启动桌面启动器Launcher。

本发明实施例提供的页面加载方法,以Viewpager作为基础控件提出一种简单、交互友好的用户界面加载方案,能够实现页面切换中的动画效果加载,使页面加载方式更加生动,并且加载过程更加流畅。

附图说明

图1为本发明实施例提供的页面加载方法的流程图。

具体实施方式

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

本发明实施例提供的方法适用于Android系统的用户终端,用于解决页面加载不流畅,容易卡顿,且无法实现动画加载的问题。

图1为本发明实施例提供的页面加载方法流程图,如图1所示,包括:

步骤101,用户终端接收用户输入的用户终端启动指令,获取主页面基础控件Viewpager的数据;

具体的,基于Android终端的桌面启动器Launcher启动时先加载主页面基础控件Viewpager的相关数据并填充画面。

步骤102,以Viewpager为子节点获取根节点View,并根据View确定画面处理机制Canvas;

具体的,由于Viewpager的最终父类为View,而View类包含Surface,而Surface中又包含CompatibleCanvas,且CompatibleCanvas继承自Canvas。这里所说的Canvas属于java.awt.Canvas包下。

步骤103,获取Matrix中存储的对于View的绘画操作的记录;

具体的,Canvas中包含一个矩阵对象Matrix。

这里所说的Matrix就是一块内存区域,针对View的各种绘画操作都保存在此内存区域中。

步骤104,调用invalidate()函数,对当前页面进行刷新,根据绘画操作的记录生成当前页面显示数据;

步骤105,根据View确定View的子类ViewGroup,并且根据invalidate()函数确定View或ViewGroup的父视图ParentView;

具体的,界面请求绘制调用invalidate(),此函数会找到当前View或Viewgroup的ParentView,并且调用父视图的invalidateChild(this,r)。

步骤106,通过invalidateChild对父视图层层向上循环调用,直到调用到根视图ViewRoot,并根据循环调用的结果生成全部用户可视显示页面的映射关系;

具体的,invalidateChild会循环调用父视图的invalidateChildInParent(),由此可以层层向上层视图调用,直到调用到根视图ViewRoot。ViewRoot的invalidateChildInParent调用invalidateChild,然后发送消息让ViewRoot进行绘制。其中,绘制代码在handleMessage()中的case DO_TRAVERSAL中调用了performTraversals()。

步骤107,确定响应用户操作的分发事件的处理机制,将处理机制加载到映射关系中,并且根据映射关系,层层向下对显示页面进行绘制;

具体的,在ViewGroup的dispatchDraw中会调用drawChild函数。drawChild根据子View的私有标志位PrivateFlags来调用子类的draw()或者dispatchDraw(canvas)。由此实现了层层向下绘制,直到最基本的View。View的dispatchDraw是一个抽象函数,绘制过程到此结束。

步骤108,对部分或各个显示页面设置添加Animator;

具体的,可以通过添加Animator设置页面加载的动画效果,比如立体效果、水波纹效果等等,通过Animator参数设置可以设置不同的动画效果。

步骤109,ViewRoot调用nativeShowFPS函数将绘制的结果canvas传递至本地层进行显示。

当用户在使用中需要触发页面切换时,向用户终端输入页面切换操作指令,用户终端根据页面切换操作指令生成相应的第一分发事件,并根据第一分发事件的处理机制切换显示页面,从而实现页面的切换。在切换显示页面的过程中,可以根据Viewpager获取相应的Animator,从而以动画方式加载显示页面。

在具体的实现过程中,用户触发页面左右滑动事件时,前述Surface开始响应页面刷新,每个Surface通常对应两个buffer,一个front buffer,一个back buffer。其中,back buffer就是canvas绘图时对应的bitmap。因此,绘画总是在back buffer上,需要更新时,则将back buffer和front buffer互换。每个surface又对应一个layer,SurfaceFlinger负责将各个layer的front buffer合成(composite)绘制到屏幕上。

同时在这个流程中,可以很方便的添加Animator到Viewpager并展现为在页面左右切换时的动画效果,方便处理且不容易出错和出现黑屏等异常情况。

本发明实施例提供的页面加载方法,以Viewpager作为基础控件提出一种简单、交互友好的用户界面加载方案,能够实现页面切换中的动画效果加载,使页面加载方式更加生动,并且加载过程更加流畅。

本发明实施例提供的方法,在开发、设计基于Android终端的Launcher类应用时,相对于现有技术缺乏多样性、容易出错、黑屏等异常情况都有了很大程度上的优化,并且更加方便的加入动画,处理方便,为提升用户体验带来技术成本上的节约。

专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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