一种视图层级优化的方法及装置与流程

文档序号:13532301阅读:275来源:国知局
一种视图层级优化的方法及装置与流程

本申请涉及视图处理领域,具体涉及一种视图层级优化的方法。本申请同时涉及一种视图层级优化的装置,以及一种电子设备。



背景技术:

在终端设备中,cpu(中央处理器)、gpu(graphicsprocessingunit,图形处理器)和显示器在进行用户界面(ui,userinterface)渲染时,是通过下述方式协同工作:在帧同步信号到达后,会通知应用程序进行用户界面渲染,应用程序的主线程开始在cpu当中计算显示内容,比如视图的创建、布局计算、图片解码、文本绘制等,计算完成后cpu会将显示内容提交到gpu,由gpu根据显示内容进行变换、和成和渲染,渲染完成后gpu会将渲染结果放入帧缓存区,等待下一次帧同步信号到达后将帧缓存区的数据传递给显示器进行显示。

以ios系统为例,应用程序通过系统提供的uikit和coreanimation等框架进行用户界面渲染,但这些框架都要求必须在主线程进行操作,内部的实现也都是主线程在cpu上进行的,比如准备视图的层级关系、设置图层属性、绘制位图以及图片解码等。当用户界面的视图层级较为复杂时,如果cpu或者gpu在一个渲染周期内无法完成任务,导致用户界面内容不能及时更新到屏幕上,会引起用户界面卡顿。



技术实现要素:

本申请提供一种视图层级优化的方法,以解决现有技术存在的问题。本申请同时涉及一种视图层级优化的装置,以及一种电子设备。

本申请提供一种视图层级优化的方法,包括:

获取视图层级结构各层级包含的视图的属性;

在所述视图层级结构中查找与所述视图的具有层级关联关系的关联视图;

根据所述关联视图和所述视图的属性,判断所述视图与所述关联视图是否满足进行光栅化的约束条件,若是,将所述视图与所述关联视图进行光栅化。

可选的,所述视图层级结构包括:视图层级树;

所述视图与所述关联视图的层级关联关系,是指所述关联视图在所述视图层级树中为所述视图的祖先视图,且所述关联视图处于与所述视图所在层级最近的层级。

可选的,所述视图的属性包括:光栅化属性和非光栅化属性;

相应的,所述视图层级树中的视图包括:光栅化根视图、光栅化子视图和非光栅化视图;

其中,所述光栅化根视图设置有状态标识,所述状态标识包括:允许与光栅化子视图进行光栅化的第一状态标识,以及不允许与光栅化子视图进行光栅化的第二状态标识。

可选的,所述视图与所述关联视图进行光栅化的约束条件,包括下述至少一项:

所述关联视图为光栅化根视图或者非光栅化视图,所述视图的属性为光栅化属性,所述关联视图的状态标识为第一状态标识。

可选的,所述在所述视图层级结构中查找与所述视图的具有层级关联关系的关联视图,采用如下方式实现:

在所述视图层级树中查找所述视图的祖先视图;

判断查找到的所述祖先视图中是否存在所述视图的关联视图,若是,执行所述根据所述关联视图和所述视图的属性,判断所述视图与所述关联视图是否满足进行光栅化的约束条件步骤;

若否,判断所述视图的属性是否为光栅化属性,若是光栅化属性,将所述视图作为光栅化根视图,并将所述视图的状态标识设为所述第一状态标识。

可选的,若所述约束条件包括:所述关联视图为光栅化根视图,且所述视图的属性为光栅化属性;

相应的,所述判断所述视图与所述关联视图是否满足进行光栅化的约束条件,采用如下方式实现:

判断所述视图的属性是否为光栅化属性,若是光栅化属性,判断所述关联视图的是否为光栅化根视图,若是光栅化根视图,执行所述将所述视图与所述关联视图进行光栅化步骤;若不是光栅化根视图,将所述关联视图设为所述视图的父视图;

若不是光栅化属性,将所述关联视图设为所述视图的父视图;以及判断所述关联视图是否为光栅化根视图,若是光栅化根视图,则将所述关联视图的状态标识标记为所述第二状态标识。

可选的,若所述约束条件包括:所述关联视图为光栅化根视图或者非光栅化视图,所述视图的属性为光栅化属性,且所述关联视图的状态标识为第一状态标识;

相应的,所述判断所述视图与所述关联视图是否满足进行光栅化的约束条件,采用如下方式实现:

判断所述视图的属性是否为光栅化属性,若是光栅化属性,判断所述关联视图的是否为光栅化根视图,若是光栅化根视图,判断所述关联视图的状态标识是否为第一状态标识;若是第一状态标识,执行所述将所述视图与所述关联视图进行光栅化步骤;若不是第一状态标识,将所述关联视图设为所述视图的父视图;若不是光栅化根视图,将所述关联视图设为所述视图的父视图;

若不是光栅化属性,将所述关联视图设为所述视图的父视图;以及判断所述关联视图是否为光栅化根视图,若是光栅化根视图,则将所述关联视图的状态标识标记为所述第二状态标识。

可选的,若所述约束条件包括:所述关联视图为光栅化根视图,所述视图的属性为光栅化属性,且所述关联视图的状态标识为第一状态标识;

相应的,所述判断所述视图与所述关联视图是否满足进行光栅化的约束条件,采用如下方式实现:

判断所述视图的属性是否为光栅化属性,若是光栅化属性,判断所述关联视图的状态标识是否为第一状态标识;若是第一状态标识,执行所述将所述视图与所述关联视图进行光栅化步骤;若不是第一状态标识,将所述关联视图设为所述视图的父视图;

若不是光栅化属性,将所述关联视图设为所述视图的父视图;以及判断所述关联视图是否为光栅化根视图,若是光栅化根视图,则将所述关联视图的状态标识标记为所述第二状态标识。

可选的,所述将所述视图与所述关联视图进行光栅化,采用如下方式实现:

隐藏所述视图,将所述视图的显示特性绘制在所述关联视图所在的位图上;或者,合并所述视图和所述关联视图,并将合并结果绘制在一张位图上。

可选的,针对所述视图层级树包含的视图,从所述视图层级树中的根视图开始,采用深度遍历的方式遍历所述视图层级树包含的视图;

并且,每遍历一个视图,针对遍历的视图执行所述在所述视图层级结构中查找与所述视图的具有层级关联关系的关联视图步骤,以及所述根据所述关联视图和所述视图的属性,判断所述视图与所述关联视图是否满足进行光栅化的约束条件步骤。

可选的,所述视图层级优化的方法,包括:

判断所述视图层级树包含的视图是否遍历完毕,若否,对所述视图层级树包含的视图中尚未遍历的视图进行遍历。

本申请还提供一种视图层级优化的管理装置,包括:

视图属性获取单元,用于获取视图层级结构各层级包含的视图的属性;

关联视图查找单元,用于在所述视图层级结构中查找与所述视图的具有层级关联关系的关联视图;

光栅化判断单元,用于根据所述关联视图和所述视图的属性,判断所述视图与所述关联视图是否满足进行光栅化的约束条件,若是,运行光栅化单元;

所述光栅化单元,用于将所述视图与所述关联视图进行光栅化。

本申请还提供一种电子设备,包括:

存储器和处理器;

所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:

获取视图层级结构各层级包含的视图的属性;

在所述视图层级结构中查找与所述视图的具有层级关联关系的关联视图;

根据所述关联视图和所述视图的属性,判断所述视图与所述关联视图是否满足进行光栅化的约束条件,若是,将所述视图与所述关联视图进行光栅化。

本申请提供的所述视图层级优化的方法,包括:获取视图层级结构各层级包含的视图的属性;在所述视图层级结构中查找与所述视图的具有层级关联关系的关联视图;根据所述关联视图和所述视图的属性,判断所述视图与所述关联视图是否满足进行光栅化的约束条件,若是,将所述视图与所述关联视图进行光栅化。

所述视图层级优化的方法,在视图层级结构中查找与视图的具有层级关联关系的关联视图,根据预先获取的所述视图和所述关联视图的属性判断二者是否满足进行光栅化处理的约束条件,如果所述视图与所述关联视图满足进行光栅化处理的约束条件,则将所述视图光栅化到所述关联视图上,通过对所述视图层级结构包含的视图进行所述光栅化处理,从而减少所述视图层级结构各层级包含的视图,简化所述视图层级结构的层级关系,降低所述视图层级结构的复杂度。

附图说明

附图1是本申请提供的一种视图层级优化的方法实施例的处理流程图;

附图2是本申请提供的一种应用界面的示意图;

附图3是本申请提供的一种视图层级树的示意图;

附图4是本申请提供的一种光栅化后视图层级树的示意图;

附图5是本申请提供的一种视图层级优化的装置实施例的示意图;

附图6是本申请提供的一种电子设备实施例的示意图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其他方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。

本申请提供一种视图层级优化的方法,本申请还提供一种视图层级优化的装置,以及一种电子设备。以下分别结合本申请提供的实施例的附图逐一进行详细说明,并且对方法的各个步骤进行说明。

本申请提供的一种视图层级优化的方法实施例如下:

参照附图1,其示出了本申请提供的一种视图层级优化的方法实施例的处理流程图,参照附图2,其示出了本申请提供的一种应用界面的示意图,参照附图3,其示出了本申请提供的一种视图层级树的示意图,参照附图4,其示出了本申请提供的一种光栅化后视图层级树的示意图。

步骤s101,获取视图层级结构各层级包含的视图的属性。

本申请实施例所述视图是指用于显示图象、文字或视频等元素的对象,常见的视图为矩形视图,视图可以用于处理用户鼠标点击或者触摸手势等操控行为,视图可以构建于另一个视图中来形成一种层次的结构,即视图层级结构,在视图层级结构中每个视图控制其子视图的位置。本申请提供的所述视图层级优化的方法,通过对所述视图层级结构中的视图进行光栅化处理来简化其中的层级关系,以任意两个视图为例,针对这两个视图进行光栅化处理,可以隐藏其中一个视图,将被隐藏视图的显示特性绘制在另一视图上,或者合并这两个视图,将二者的合并结果绘制在位图上。与之相类似,针对三个视图甚至更多视图进行光栅化处理,与上述针对两个视图的光栅化处理类似,都是将多个视图的显示特性显示在同一位图上,从而来简化所述视图层级结构中的层级关系,降低所述视图层级结构层级复杂度。

本实施例以树形的视图层级结构为了进行说明,如附图2所示的ios应用界面,其中包含一个根视图(rootview),根视图包含三个子视图:view1、view3和view6,子视图view1包含一个子视图view2,子视图view3包含两个子视图view4和view5,子视图view6包含一个子视图view7,子视图view4中存在一个按钮button。该应用界面对应的视图层级树如附图3所示,其中,层级相邻视图之间具有“父子关系”,根视图rootview是子视图view1、子视图view3和子视图view6的父视图,子视图view1是子视图view2的父视图,子视图view3是子视图view4和子视图view5的父视图,子视图view6是子视图view7的父视图,按钮button与子视图view4具有“父子关系”。

在视图层级树中,每个子视图的父视图只有一个,但每个父视图的子视图可能只有一个,也可能有多个。所述子视图的父视图,所述子视图的父视图也可能存在父视图,类似的,所述子视图的父视图的父视图也可能存在父视图,以此类推,直至视图层级树中的根视图。所述子视图的父视图、所述子视图的父视图的父视图、所述子视图的父视图的父视图的父视图等,共同组成了所述子视图的祖先视图。如图2所示,子视图view1的祖先视图包括根视图rootview;子视图view2的祖先视图包括子视图view1和根视图rootview;子视图view3的祖先视图包括根视图rootview;子视图view4的祖先视图包括子视图view3和根视图rootview;按钮button的祖先视图包括子视图view4、子视图view3和根视图rootview;子视图view5的祖先视图包括子视图view3和根视图rootview;子视图view6的祖先视图包括根视图rootview;子视图view7的祖先视图包括子视图view6和根视图rootview。

在实际应用中,并不一定是所有的视图都支持所述光栅化处理,与其他视图进行合并,根据所述视图自身的特性,可能会存在部分不允许与其他视图进行光栅化处理的视图。在此,针对所述视图设置相应属性,所述视图的属性包括光栅化属性和非光栅化属性,如果当前视图允许与其他视图进行光栅化处理,则当前视图的属性为光栅化属性;反之,如果当前视图不允许与其他视图进行光栅化处理,则当前视图的属性为非光栅化属性。

基于此,所述视图层级树中的视图可分为:光栅化根视图、光栅化子视图和非光栅化视图。所述视图层级树中的每一个光栅化根视图至少有一个子视图,所述光栅化根视图还设置有状态标识,状态标识具体包括第一状态标识和第二状态标识,如果光栅化根视图的标识为第一状态标识,则表示当前光栅化根视图允许与其子视图(即光栅化子视图)进行光栅化;如果光栅化根视图的标识为第二状态标识,则表示当前光栅化根视图不允许与其子视图(即光栅化子视图)进行光栅化。本实施例中,所述光栅化根视图的状态标识默认设置为所述第一状态标识。

本步骤获取所述视图层级树所包含视图的属性,比如根据所述视图层级树中视图自身的特性信息来确定所述视图的属性,即:确定所述视图层级树所包含视图的属性是光栅化属性还是非光栅化属性。如附图3所示的视图层级树,其中,根视图rootview、子视图view1至子视图view7的属性为光栅化属性,按钮button的属性为非光栅化属性。相应的,根视图rootview、子视图view5和子视图view6为光栅化根视图;子视图view1、子视图view2、子视图view3、子视图view4和子视图view7为光栅化子视图;按钮button为非光栅化视图。

步骤s102,在所述视图层级结构中查找与所述视图的具有层级关联关系的关联视图。

所述视图与所述关联视图的层级关联关系,是指所述关联视图在所述视图层级树中为所述视图的祖先视图,且所述关联视图处于与所述视图所在层级最近的层级。如附图3所示的视图层级树,其中,子视图view1的祖先视图只有根视图rootview,则子视图view1的关联视图为根视图rootview。子视图view2的祖先视图包括:子视图view1和根视图rootview,但相比子视图view1与子视图view2二者所在的层级相邻,明显比子视图view1与根视图rootview的层级关系近,因此,将子视图view1作为子视图view2的关联视图。

本步骤中,在所述视图层级结构中查找与所述视图的具有层级关联关系的关联视图,具体实现如下:

1)在所述视图层级树中查找所述视图的祖先视图;

具体在所述视图层级树中查找所述视图的祖先视图时,从所述视图的父视图开始,依次向上查找所述视图的父视图,所述视图的父视图的父视图,直至所述视图层级树中的根视图。

2)判断查找到的所述祖先视图中是否存在所述视图的关联视图,若是,执行下述步骤s103,根据所述关联视图和所述视图的属性,判断所述视图与所述关联视图是否满足进行光栅化的约束条件;若否,判断所述视图的属性是否为光栅化属性,若是光栅化属性,将所述视图作为光栅化根视图,并将所述视图的状态标识设为所述第一状态标识;若不是光栅化属性,不作处理即可。

步骤s103,根据所述关联视图和所述视图的属性,判断所述视图与所述关联视图是否满足进行光栅化的约束条件。

本申请实施例所述视图与所述关联视图进行光栅化的约束条件,包括:所述关联视图为光栅化根视图或者非光栅化视图,所述视图的属性为光栅化属性,以及所述关联视图的状态标识为第一状态标识。在此基础上,本步骤根据所述关联视图和所述视图的属性,判断所述视图与所述关联视图是否满足进行光栅化的约束条件,具体实现如下:

a、判断所述视图的属性是否为光栅化属性,若是,执行子步骤b;若否,将所述关联视图设为所述视图的父视图;并判断所述关联视图是否为光栅化根视图,若是,则将所述关联视图的状态标识标记为所述第二状态标识。

b、判断所述关联视图的是否为光栅化根视图,若是,执行子步骤c;若否,将所述关联视图设为所述视图的父视图。

c、判断所述关联视图的状态标识是否为第一状态标识,若是,执行下述步骤s104,将所述视图与所述关联视图进行光栅化;若否,将所述关联视图设为所述视图的父视图。

如附图3所示的视图层级树,当对子视图view1进行处理时,如上所述,子视图view1的属性为光栅化属性,子视图view1的关联视图(根视图rootview)的属性也为光栅化属性。基于此,判断子视图view1的属性是否为光栅化属性,由于子视图view1的属性为光栅化属性,进一步判断关联视图(根视图rootview)是否为光栅化根视图,由于关联视图(根视图rootview)为光栅化根视图,则更进一步判断关联视图(根视图rootview)的状态标识是否为第一状态标识,如果根视图rootview的状态标识为第一状态标识,则针对子视图view1与根视图rootview进行光栅化,将子视图view1的合并到根视图rootview上。

除上述提供的实现方式之外,所述约束条件还可以是所述关联视图为光栅化根视图或者非光栅化视图、所述视图的属性为光栅化属性以及所述关联视图的状态标识为第一状态标识当中任意一项或者多项组合。比如所述视图与所述关联视图进行光栅化的约束条件包括:所述关联视图为光栅化根视图,且所述视图的属性为光栅化属性,则上述根据所述关联视图和所述视图的属性判断所述视图与所述关联视图是否满足进行光栅化的约束条件,具体实现如下:

a、判断所述视图的属性是否为光栅化属性,若是,执行子步骤b;若否,将所述关联视图设为所述视图的父视图,并判断所述关联视图是否为光栅化根视图,若是,则将所述关联视图的状态标识标记为所述第二状态标识。

b、判断所述关联视图的是否为光栅化根视图,若是,执行下述步骤s104,将所述视图与所述关联视图进行光栅化;若否,将所述关联视图设为所述视图的父视图。

再比如所述视图与所述关联视图进行光栅化的约束条件包括:所述关联视图为光栅化根视图,所述视图的属性为光栅化属性,且所述关联视图的状态标识为第一状态标识,则上述根据所述关联视图和所述视图的属性判断所述视图与所述关联视图是否满足进行光栅化的约束条件,具体实现如下:

a、判断所述视图的属性是否为光栅化属性,若是,执行子步骤b;若否,将所述关联视图设为所述视图的父视图,并判断所述关联视图是否为光栅化根视图,若是,则将所述关联视图的状态标识标记为所述第二状态标识。

b、判断所述关联视图的状态标识是否为第一状态标识;若是,执行下述步骤s104,将所述视图与所述关联视图进行光栅化;若否,将所述关联视图设为所述视图的父视图。

步骤s104,将所述视图与所述关联视图进行光栅化。

本步骤得以实施的前提是上述步骤s103判断所述视图与所述关联视图是否满足进行光栅化的约束条件的判断结果为是,基于此将所述视图与所述关联视图进行光栅化,具体可以是合并所述视图与所述关联视图,将二者的合并结果绘制在位图上;还可以将所述视图隐藏,并将所述视图的显示特性绘制在所述关联视图所在的位图上。

在具体实施时,在执行上述步骤s102和步骤s103时,还可采用遍历的方式对所述视图层级树包含的视图进行处理,在遍历的基础上执行上述步骤s102和步骤s103。具体在遍历时,可以从所述视图层级树中的根视图开始,采用深度遍历的方式遍历所述视图层级树包含的视图,每遍历一个视图,针对遍历的视图执行上述步骤s102和步骤s103所述操作。

基于此,在遍历过程中,为了确保所述视图层级树中的所有视图全部被遍历,还可以在每遍历完成一个视图之后,执行如下遍历检测操作:判断所述视图层级树包含的视图是否遍历完毕,若是,表明所述视图层级树中所有视图全部遍历完毕,结束处理即可;若否,对所述视图层级树包含的视图中尚未遍历的视图进行遍历。

如附图3所示的视图层级树,从所述视图层级树中的根视图开始,采用深度遍历的方式遍历所述视图层级树包含的视图,可见所述视图层级树中视图的遍历顺序为:根视图rootview->子视图view1->子视图view2->子视图view3->子视图view4->按钮button->子视图view5->子视图view6->子视图view7。

按照上述遍历顺序,当遍历至根视图rootview时,由于根视图rootview不存在父节点,不作处理即可。

当遍历至子视图view1时,子视图view1的关联视图为根视图rootview,按照上述处理逻辑,由于子视图view1的属性为光栅化属性,其关联视图(根视图rootview)为光栅化根视图,并且关联视图(根视图rootview)的状态标识为第一状态标识,光栅化结果为将子视图view1合并到根视图rootview上,如附图4提供的视图层级树所示。

当遍历至子视图view2时,子视图view2的祖先视图包括:子视图view1和根视图rootview,其中满足条件的关联视图为根视图rootview,按照上述处理逻辑,由于子视图view2的属性为光栅化属性,其关联视图(根视图rootview)为光栅化根视图,并且关联视图(根视图rootview)的状态标识为第一状态标识,光栅化结果为将子视图view2合并到根视图rootview上,如附图4提供的视图层级树所示。

当遍历至子视图view3,处理方式与上述子视图view1的处理方式类似,最终子视图view3被合并到根视图rootview上。

当当遍历至子视图view4,处理方式与上述子视图view2的处理方式类似,最终子视图view4被合并到根视图rootview上。

当遍历至按钮button时,按钮button的祖先视图包括:子视图view4、子视图view3和根视图rootview,其中满足条件的关联视图为根视图rootview,则按钮button的关联节点为根视图rootview,由于按钮button的属性为非光栅化属性,将根视图rootview设为按钮button的父视图,即:将按钮button父视图从之前的子视图view4变更为根视图rootview;并且由于根视图rootview为光栅化根视图,则根视图rootview的状态标识被设为第二状态标识,即:根视图rootview的状态标识从默认的第一状态标识变更为第二状态标识。在此之后,根视图rootview不允许与其他子视图进行光栅化,子视图view5、子视图view6和子视图view7不允许合并到根视图rootview上,如附图4提供的视图层级树所示。

当遍历至子视图view5时,其关联视图为根视图rootview,但由于根视图rootview的状态在遍历按钮button的过程中被设为第二状态标识,因此,虽然子视图view5满足被光栅化到根视图rootview上的其余条件,但子视图view5无法被光栅化到根视图rootview上,如附图4提供的视图层级树所示。

类似的,子视图view6也无法被光栅化到根视图rootview上,但子视图view7满足被光栅化到子视图view6的条件,最终子视图view7被光栅化到子视图view6上,子视图如附图4提供的视图层级树所示。

综上所述,所述视图层级优化的方法,在视图层级结构中查找与视图的具有层级关联关系的关联视图,根据预先获取的所述视图和所述关联视图的属性判断二者是否满足进行光栅化处理的约束条件,如果所述视图与所述关联视图满足进行光栅化处理的约束条件,则将所述视图光栅化到所述关联视图上,通过对所述视图层级结构包含的视图进行所述光栅化处理,从而减少所述视图层级结构各层级包含的视图,简化所述视图层级结构的层级关系,降低所述视图层级结构的复杂度。

本申请提供的另一种视图层级优化的方法实施例如下:

除上述提供的所述视图层级优化的方法实施例之外,与之相类似,本申请还提供了一种视图层级优化的方法实施例。由于本实施例与上述方法实施例类似,所以描述得比较简单,相关的部分请参见上述提供的方法实施例的对应说明即可。下述描述的方法实施例仅仅是示意性的。

所述视图层级优化的方法,包括:

获取待渲染对象的视图层级结构各层级包含的视图的属性;

在所述视图层级结构中查找与所述视图的具有层级关联关系的关联视图;

根据所述关联视图和所述视图的属性,判断所述视图与所述关联视图是否满足进行光栅化的约束条件,若是,将所述视图与所述关联视图进行光栅化;

基于主线程触发针对所述待渲染对象的用户界面渲染;

从所述主线程切换至子线程,在所述子线程根据上述光栅化获得的所述视图层级结构绘制所述待渲染对象对应的位图;

回调所述主线程,将绘制好的位图应用到所述待渲染对象的显示内容当中;

根据所述待渲染对象的显示内容渲染用户界面。

除此之外,所述视图层级优化的方法还可以采用上述实现方式之外的其他方式实现,比如:

基于主线程触发针对待渲染对象的用户界面渲染;

获取所述待渲染对象的视图层级结构各层级包含的视图的属性;

在所述视图层级结构中查找与所述视图的具有层级关联关系的关联视图;

根据所述关联视图和所述视图的属性,判断所述视图与所述关联视图是否满足进行光栅化的约束条件,若是,将所述视图与所述关联视图进行光栅化;

从所述主线程切换至子线程,在所述子线程根据上述光栅化获得的所述视图层级结构绘制所述待渲染对象对应的位图;

回调所述主线程,将绘制好的位图应用到所述待渲染对象的显示内容当中;

根据所述待渲染对象的显示内容渲染用户界面。

本申请提供的一种视图层级优化的装置实施例如下:

在上述的实施例中,提供了一种视图层级优化的方法,与之相对应的,本申请还提供了一种视图层级优化的装置,下面结合附图进行说明。

参照附图5,其示出了本申请提供的一种视图层级优化的装置实施例的示意图。

由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关的部分请参见上述提供的方法实施例的对应说明即可。下述描述的装置实施例仅仅是示意性的。

本申请提供一种视图层级优化的装置,包括:

视图属性获取单元501,用于获取视图层级结构各层级包含的视图的属性;

关联视图查找单元502,用于在所述视图层级结构中查找与所述视图的具有层级关联关系的关联视图;

光栅化判断单元503,用于根据所述关联视图和所述视图的属性,判断所述视图与所述关联视图是否满足进行光栅化的约束条件,若是,运行光栅化单元504;

所述光栅化单元504,用于将所述视图与所述关联视图进行光栅化。

可选的,所述视图层级结构包括:视图层级树;

所述视图与所述关联视图的层级关联关系,是指所述关联视图在所述视图层级树中为所述视图的祖先视图,且所述关联视图处于与所述视图所在层级最近的层级。

可选的,所述视图的属性包括:光栅化属性和非光栅化属性;

相应的,所述视图层级树中的视图包括:光栅化根视图、光栅化子视图和非光栅化视图;

其中,所述光栅化根视图设置有状态标识,所述状态标识包括:允许与光栅化子视图进行光栅化的第一状态标识,以及不允许与光栅化子视图进行光栅化的第二状态标识。

可选的,所述视图与所述关联视图进行光栅化的约束条件,包括下述至少一项:

所述关联视图为光栅化根视图或者非光栅化视图,所述视图的属性为光栅化属性,所述关联视图的状态标识为第一状态标识。

可选的,所述关联视图查找单元502,包括:

祖先视图查找子单元,用于在所述视图层级树中查找所述视图的祖先视图;

关联视图判断子单元,用于判断查找到的所述祖先视图中是否存在所述视图的关联视图,若是,运行所述光栅化判断单元503;若否,运行判断子单元;

其中,所述判断子单元,用于判断所述视图的属性是否为光栅化属性,若是光栅化属性,将所述视图作为光栅化根视图,并将所述视图的状态标识设为所述第一状态标识。

可选的,若所述约束条件包括:所述关联视图为光栅化根视图,且所述视图的属性为光栅化属性;

相应的,所述光栅化判断单元503,包括:

第一光栅化属性判断子单元,用于判断所述视图的属性是否为光栅化属性,若是,运行第一光栅化根视图判断子单元;若否,将所述关联视图设为所述视图的父视图;以及判断所述关联视图是否为光栅化根视图,若是光栅化根视图,则将所述关联视图的状态标识标记为所述第二状态标识;

其中,所述第一光栅化根视图判断子单元,用于判断所述关联视图的是否为光栅化根视图,若是,运行所述光栅化单元504;若否,将所述关联视图设为所述视图的父视图。

可选的,若所述约束条件包括:所述关联视图为光栅化根视图或者非光栅化视图,所述视图的属性为光栅化属性,且所述关联视图的状态标识为第一状态标识;

相应的,所述光栅化判断单元503,包括:

第二光栅化属性判断子单元,用于判断所述视图的属性是否为光栅化属性,若是光栅化属性,运行第二光栅化根视图判断子单元;若不是光栅化属性,将所述关联视图设为所述视图的父视图;以及判断所述关联视图是否为光栅化根视图,若是光栅化根视图,则将所述关联视图的状态标识标记为所述第二状态标识;

其中,所述第二光栅化根视图判断子单元,用于判断所述关联视图的是否为光栅化根视图,若是光栅化根视图,运行状态标识第一判断子单元;若不是光栅化根视图,将所述关联视图设为所述视图的父视图;

所述状态标识第一判断子单元,用于判断所述关联视图的状态标识是否为第一状态标识;若是第一状态标识,运行所述光栅化单元504;若不是第一状态标识,将所述关联视图设为所述视图的父视图。

可选的,若所述约束条件包括:所述关联视图为光栅化根视图,所述视图的属性为光栅化属性,且所述关联视图的状态标识为第一状态标识;

相应的,所述光栅化判断单元503,包括:

第三光栅化属性判断子单元,用于判断所述视图的属性是否为光栅化属性,若是光栅化属性,运行状态标识第二判断子单元;若不是光栅化属性,将所述关联视图设为所述视图的父视图;以及判断所述关联视图是否为光栅化根视图,若是光栅化根视图,则将所述关联视图的状态标识标记为所述第二状态标识;

其中,所述状态标识第二判断子单元,用于判断所述关联视图的状态标识是否为第一状态标识;若是第一状态标识,运行所述光栅化单元504;若不是第一状态标识,将所述关联视图设为所述视图的父视图。

可选的,所述光栅化单元504,具体用于隐藏所述视图,将所述视图的显示特性绘制在所述关联视图所在的位图上;或者,合并所述视图和所述关联视图,并将合并结果绘制在一张位图上。

可选的,针对所述视图层级树包含的视图,从所述视图层级树中的根视图开始,采用深度遍历的方式遍历所述视图层级树包含的视图;并且,每遍历一个视图,针对遍历的视图运行所述关联视图查找单元502和所述光栅化判断单元503。

可选的,所述视图层级优化的装置,包括:

遍历判断单元,用于判断所述视图层级树包含的视图是否遍历完毕,若否,对所述视图层级树包含的视图中尚未遍历的视图进行遍历。

本申请提供的一种电子设备实施例如下:

在上述的实施例中,提供了一种视图层级优化的方法,此外,本申请还提供了一种用于实现所述视图层级优化的方法的电子设备,下面结合附图进行说明。

参照附图6,其示出了本实施例提供的一种电子设备的示意图。

本申请提供的所述电子设备实施例描述得比较简单,相关的部分请参见上述提供的所述视图层级优化的方法实施例的对应说明即可。下述描述的实施例仅仅是示意性的。

本申请提供一种电子设备,包括:

存储器601和处理器602;

所述存储器601用于存储计算机可执行指令,所述处理器602用于执行如下计算机可执行指令:

获取视图层级结构各层级包含的视图的属性;

在所述视图层级结构中查找与所述视图的具有层级关联关系的关联视图;

根据所述关联视图和所述视图的属性,判断所述视图与所述关联视图是否满足进行光栅化的约束条件,若是,将所述视图与所述关联视图进行光栅化。

可选的,所述视图层级结构包括:视图层级树;

所述视图与所述关联视图的层级关联关系,是指所述关联视图在所述视图层级树中为所述视图的祖先视图,且所述关联视图处于与所述视图所在层级最近的层级。

可选的,所述视图的属性包括:光栅化属性和非光栅化属性;

相应的,所述视图层级树中的视图包括:光栅化根视图、光栅化子视图和非光栅化视图;

其中,所述光栅化根视图设置有状态标识,所述状态标识包括:允许与光栅化子视图进行光栅化的第一状态标识,以及不允许与光栅化子视图进行光栅化的第二状态标识。

可选的,所述视图与所述关联视图进行光栅化的约束条件,包括下述至少一项:

所述关联视图为光栅化根视图或者非光栅化视图,所述视图的属性为光栅化属性,所述关联视图的状态标识为第一状态标识。

可选的,所述在所述视图层级结构中查找与所述视图的具有层级关联关系的关联视图,采用如下方式实现:

在所述视图层级树中查找所述视图的祖先视图;

判断查找到的所述祖先视图中是否存在所述视图的关联视图,若是,执行所述根据所述关联视图和所述视图的属性,判断所述视图与所述关联视图是否满足进行光栅化的约束条件指令;

若否,判断所述视图的属性是否为光栅化属性,若是光栅化属性,将所述视图作为光栅化根视图,并将所述视图的状态标识设为所述第一状态标识。

可选的,若所述约束条件包括:所述关联视图为光栅化根视图,且所述视图的属性为光栅化属性;

相应的,所述判断所述视图与所述关联视图是否满足进行光栅化的约束条件,采用如下方式实现:

判断所述视图的属性是否为光栅化属性,若是光栅化属性,判断所述关联视图的是否为光栅化根视图,若是光栅化根视图,执行所述将所述视图与所述关联视图进行光栅化指令;若不是光栅化根视图,将所述关联视图设为所述视图的父视图;

若不是光栅化属性,将所述关联视图设为所述视图的父视图;以及判断所述关联视图是否为光栅化根视图,若是光栅化根视图,则将所述关联视图的状态标识标记为所述第二状态标识。

可选的,若所述约束条件包括:所述关联视图为光栅化根视图或者非光栅化视图,所述视图的属性为光栅化属性,且所述关联视图的状态标识为第一状态标识;

相应的,所述判断所述视图与所述关联视图是否满足进行光栅化的约束条件,采用如下方式实现:

判断所述视图的属性是否为光栅化属性,若是光栅化属性,判断所述关联视图的是否为光栅化根视图,若是光栅化根视图,判断所述关联视图的状态标识是否为第一状态标识;若是第一状态标识,执行所述将所述视图与所述关联视图进行光栅化指令;若不是第一状态标识,将所述关联视图设为所述视图的父视图;若不是光栅化根视图,将所述关联视图设为所述视图的父视图;

若不是光栅化属性,将所述关联视图设为所述视图的父视图;以及判断所述关联视图是否为光栅化根视图,若是光栅化根视图,则将所述关联视图的状态标识标记为所述第二状态标识。

可选的,若所述约束条件包括:所述关联视图为光栅化根视图,所述视图的属性为光栅化属性,且所述关联视图的状态标识为第一状态标识;

相应的,所述判断所述视图与所述关联视图是否满足进行光栅化的约束条件,采用如下方式实现:

判断所述视图的属性是否为光栅化属性,若是光栅化属性,判断所述关联视图的状态标识是否为第一状态标识;若是第一状态标识,执行所述将所述视图与所述关联视图进行光栅化指令;若不是第一状态标识,将所述关联视图设为所述视图的父视图;

若不是光栅化属性,将所述关联视图设为所述视图的父视图;以及判断所述关联视图是否为光栅化根视图,若是光栅化根视图,则将所述关联视图的状态标识标记为所述第二状态标识。

可选的,所述将所述视图与所述关联视图进行光栅化,采用如下方式实现:

隐藏所述视图,将所述视图的显示特性绘制在所述关联视图所在的位图上;或者,合并所述视图和所述关联视图,并将合并结果绘制在一张位图上。

可选的,针对所述视图层级树包含的视图,从所述视图层级树中的根视图开始,采用深度遍历的方式遍历所述视图层级树包含的视图;并且,每遍历一个视图,针对遍历的视图执行所述在所述视图层级结构中查找与所述视图的具有层级关联关系的关联视图指令,以及所述根据所述关联视图和所述视图的属性,判断所述视图与所述关联视图是否满足进行光栅化的约束条件指令。

可选的,所述处理器602还用于执行如下计算机可执行指令:

判断所述视图层级树包含的视图是否遍历完毕,若否,对所述视图层级树包含的视图中尚未遍历的视图进行遍历。

本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。

在一个典型的配置中,计算设备包括一个或多个处理器、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

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