页面加载方法技术

技术编号:15298247 阅读:38 留言:0更新日期:2017-05-11 22:59
本发明专利技术实施例涉及一种页面加载方法,包括:以Viewpager为子节点获取根节点View,确定画面处理机制,并获取对于View的绘画操作的记录;调用invalidate()函数,根据绘画操作的记录生成当前页面显示数据;根据View确定ViewGroup,并且确定View或ViewGroup的父视图;对父视图层层向上循环调用,直到调用到ViewRoot,并根据循环调用的结果生成全部用户可视显示页面的映射关系;确定响应用户操作的分发事件的处理机制并加载到映射关系中;根据映射关系层层向下对显示页面进行绘制;对显示页面设置添加Animator;调用nativeShowFPS函数将绘制的结果进行显示。

Page loading method

The embodiment of the invention relates to a page loading method, using Viewpager as a child node for the root node View, determine the picture processing mechanism, and access to View for drawing operation records; call invalidate () function, according to the drawing operation records generated data for the current page display; according to the View determined ViewGroup, and determine the parent view View or ViewGroup; the parent view layer layer to call cycle, until the call to ViewRoot, and according to the result of the call cycle generates all the user visual display mapping page; determine the processing mechanism of the distribution of events in response to user operation and loaded into the mapping relations; according to the mapping relationship of the display page rendering layers downward; to add Animator display page setup; call the nativeShowFPS function to draw the results to display.

【技术实现步骤摘要】

本专利技术涉及通信
,尤其涉及一种页面加载方法
技术介绍
现有技术在开发、设计基于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()中的caseDO_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,一个frontbuffer,一个backbuffer。其中,backbuffer就是canvas绘图时对应的bitmap。因此,绘画总是在backbuffer上,需要更新时,则将backbuffer和frontbuffer互换。每个surface又对应一个layer,SurfaceFlinger负责将各个layer的frontbuffer合成(composite)绘制到屏幕上。同时在这个流程中,可以很方便的添加Animator到Viewpager并展现为在页面左右切换时的动画效果本文档来自技高网...
页面加载方法

【技术保护点】
一种页面加载方法,其特征在于,所述方法包括:用户终端接收用户输入的用户终端启动指令,获取主页面基础控件Viewpager的数据;以Viewpager为子节点获取根节点View,并根据View确定画面处理机制Canvas;所述Canvas包括矩阵对象Matrix的信息;获取所述Matrix中存储的对于View的绘画操作的记录;调用invalidate()函数,对当前页面进行刷新,根据所述绘画操作的记录生成当前页面显示数据;根据View确定View的子类ViewGroup,并且根据所述invalidate()函数确定所述View或ViewGroup的父视图ParentView;通过invalidateChild对父视图层层向上循环调用,直到调用到根视图ViewRoot,并根据循环调用的结果生成全部用户可视显示页面的映射关系;确定响应用户操作的分发事件的处理机制,并将所述处理机制加载到所述映射关系中;根据所述映射关系,层层向下对显示页面进行绘制;对部分或各个显示页面设置添加Animator;ViewRoot调用nativeShowFPS函数将所述绘制的结果canvas传递至本地层进行显示。

【技术特征摘要】
1.一种页面加载方法,其特征在于,所述方法包括:用户终端接收用户输入的用户终端启动指令,获取主页面基础控件Viewpager的数据;以Viewpager为子节点获取根节点View,并根据View确定画面处理机制Canvas;所述Canvas包括矩阵对象Matrix的信息;获取所述Matrix中存储的对于View的绘画操作的记录;调用invalidate()函数,对当前页面进行刷新,根据所述绘画操作的记录生成当前页面显示数据;根据View确定View的子类ViewGroup,并且根据所述invalidate()函数确定所述View或ViewGroup的父视图ParentView;通过invalidateChild对父视图层层向上循环调用,直到调用到根视图ViewRoot,并根据循环调用的结果生成全部用户可视显示页面的映射关系;确定响应用户操作的分发事件的处理机制...

【专利技术属性】
技术研发人员:葛俊鹏王坤鹏张鹏
申请(专利权)人:江西博瑞彤芸科技有限公司
类型:发明
国别省市:江西;36

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1