一种动画显示方法和装置与流程

文档序号:31302168发布日期:2022-08-27 05:15阅读:89来源:国知局
一种动画显示方法和装置与流程

1.本技术涉及计算机技术领域,尤其涉及一种动画显示方法和装置。


背景技术:

2.目前,用户在使用应用的过程中,当点击进入到某些功能界面时,这些功能界面可以显示动画以向用户提供相应服务。比如,用户在进入垃圾清理应用的垃圾清理界面进行垃圾清理时,垃圾清理界面中可以显示清理进度的动画,用户在进入手机管理应用的内存管理界面查看手机内存的使用情况时,内存管理界面中可以显示内存使用率的动画,等等。
3.通常,应用在显示动画时,可以基于第三方或自定义的动画框架实现。然而,对于复杂动画而言,由于动画本身会占用一定资源,因此会导致相应的应用进程占用的内存较多,影响进程的稳定性,此外,由于动画是基于动画框架实现,因此当动画框架异常导致动画绘制过程出现问题时,还会导致相应的应用进程崩溃,进而导致用户无法正常使用应用。


技术实现要素:

4.本技术实施例提供一种动画显示方法和装置,用于解决应用在显示动画时,容易出现进程崩溃的问题。
5.为解决上述技术问题,本技术实施例是这样实现的:
6.第一方面,提出一种动画显示方法,包括:
7.当第一进程进入到包含动画的功能界面时,在所述功能界面的动画显示位置创建surfaceview;
8.所述第一进程将动画信息以及所述surfaceview对应的surface字段发送给第二进程;
9.所述第二进程根据所述动画信息创建动画播放视图,并根据所述动画播放视图在所述surface字段对应的画布对象中进行动画绘制;
10.所述第一进程在所述surfaceview中同步显示在所述画布对象中绘制的动画。
11.第二方面,提出一种动画显示装置,包括:
12.创建模块,当第一进程进入到包含动画的功能界面时,在所述功能界面的动画显示位置创建surfaceview;
13.发送模块,将动画信息以及所述surfaceview对应的surface字段发送给第二进程;
14.动画绘制模块,根据所述动画信息创建动画播放视图,并根据所述动画播放视图在所述surface字段对应的画布对象中进行动画绘制;
15.显示模块,在所述surfaceview中同步显示在所述画布对象中绘制的动画。
16.第三方面,提出一种电子设备,该电子设备包括:
17.处理器;以及
18.被安排成存储计算机可执行指令的存储器,该可执行指令在被执行时使该处理器
执行以下操作:
19.当第一进程进入到包含动画的功能界面时,在所述功能界面的动画显示位置创建surfaceview;
20.所述第一进程将动画信息以及所述surfaceview对应的surface字段发送给第二进程;
21.所述第二进程根据所述动画信息创建动画播放视图,并根据所述动画播放视图在所述surface字段对应的画布对象中进行动画绘制;
22.所述第一进程在所述surfaceview中同步显示在所述画布对象中绘制的动画。
23.第四方面,提出一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下方法:
24.当第一进程进入到包含动画的功能界面时,在所述功能界面的动画显示位置创建surfaceview;
25.所述第一进程将动画信息以及所述surfaceview对应的surface字段发送给第二进程;
26.所述第二进程根据所述动画信息创建动画播放视图,并根据所述动画播放视图在所述surface字段对应的画布对象中进行动画绘制;
27.所述第一进程在所述surfaceview中同步显示在所述画布对象中绘制的动画。
28.本技术实施例采用的上述至少一个技术方案能够达到以下有益效果:
29.本技术实施例利用surfaceview跨进程的特性,当第一进程进入到包含动画的功能界面时,通过在功能界面显示动画的位置创建surfaceview,并将需要显示的动画信息和surfaceview对应的surface字段发送给第二进程,可以由第二进程实现动画的绘制,且第二进程在绘制动画时,第一进程可以基于surfaceview跨进程的特性在其创建的surfaceview中同步显示该动画,从而可以在当前的功能界面中显示动画。由于动画的绘制是由第二进程实现,而第二进程与第一进程之间是相互隔离的,因此当第二进程在动画绘制过程中出现问题时,也不会影响第一进程的正常运行,从而避免用户无法正常使用应用。此外,由于动画的绘制是由第二进程实现,因此还可以降低第一进程占用的内存,提高进程的稳定性。
附图说明
30.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
31.图1是本技术的一个实施例动画显示方法的流程示意图;
32.图2是本技术的一个实施例动画绘制方法的流程示意图;
33.图3(a)是本技术的一个实施例产品进程显示动画的示意图;
34.图3(b)是本技术的一个实施例动画进程显示动画的示意图;
35.图4是本技术的一个实施例动画显示方法的流程示意图;
36.图5是本技术的一个实施例电子设备的结构示意图;
37.图6是本技术的一个实施例动画显示装置的结构示意图。
具体实施方式
38.为了使本技术领域的人员更好地理解本技术中的技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
39.目前,在相关技术中,应用在某个功能界面中显示动画时,动画的绘制通常是由该功能界面对应的应用进程通过调用动画框架实现。然而,在实际绘制动画的过程中,当动画框架出现异常时,很容易导致应用进程崩溃退出,进而导致用户无法正常使用应用,严重影响用户的使用体验。此外,对于复杂动画而言,由于动画本身占用一定的资源,因此在绘制动画是还会导致相应的应用进程占用的内存较多,影响进程的稳定性。
40.为了解决上述技术问题,本技术实施例提供一种动画显示方法和装置,当第一进程进入到包含动画的功能界面时,可以利用surfaceview跨进程的特性,将动画的绘制交由第二进程实现,第二进程在绘制动画时,第一进程可以同步显示动画。这样,由于进程之间是相互隔离的,因此,当第二进程的动画绘制过程中出现问题时,也不会影响第一进程的正常运行,从而避免用户无法正常使用应用。此外,由于动画的绘制是由第二进程实现,因此还可以降低第一进程占用的内存,提高进程的稳定性。
41.需要说明的是,本技术实施例中的第一进程和第二进程可以是同一个应用的进程,第一进程可以是应用的前台进程,可以负责应用中各功能界面的显示,也可以称为产品进程或ui进程,第二进程可以是应用的后台进程,可以负责应用的后台运行。其中,当第一进程崩溃或退出时用户可以感知到,当第二进程崩溃或退出时用户通常无法感知到。在现有技术中,当第一进程进入到包含动画的功能界面时,由第一进程负责动画的绘制和显示,当第一进程在动画绘制过程中出现问题时,第一进程很容易崩溃或退出,导致功能界面卡顿或退出,用户无法正常使用应用。而在本技术实施例提供的技术方案中,当第一进程进入到包含动画的功能界面时,第一进程可以不负责动画的绘制,而是由第二进程负责动画的绘制,第一进程同步显示第二进程绘制的动画即可,这样,一方面可以保证功能界面正常显示动画,另一方面,当动画绘制过程中出现问题时,也不会影响第一进程的正常运行,进而也不会影响功能界面的正常显示,用户仍可以正常使用应用,且由于第二进程是应用的后台进程,因此,即便第二进程在动画绘制过程中出现问题导致第二进程崩溃或退出,用户也无法感知到,因此也不会影响用户正常使用应用。
42.本技术实施例提供的技术方案中,动画绘制过程由第二进程实现,第一进程同步显示第二进程绘制的动画内容,其中,第一进程和第二进程可以由surface字段进行关联,这样,在第二进程中绘制动画时,第一进程可以实现在功能界面中同步显示动画的目的。具体而言,当第一进程进入到需要显示动画的功能界面时,可以在功能界面的动画显示位置创建surfaceview,然后将动画信息和surfaceview对应的surface字段通过跨进程的方式传递给第二进程,第二进程在基于动画信息创建动画播放视图后,可以在surface字段对应
的画布对象中进行动画绘制,由于画布对象所属的surface字段将第一进程和第二进程进行了关联,且surface字段在第一进程中有对应的surfaceview,因此,第二进程在画布对象中绘制的动画内容可以在第一进程的surfaceview里同步显示出来,使得功能界面可以显示动画。
43.以下结合附图,详细说明本技术各实施例提供的技术方案。
44.图1是本技术的一个实施例动画显示方法的流程示意图。所述方法如下所述。
45.s102:当第一进程进入到包含动画的功能界面时,在功能界面的动画显示位置创建surfaceview。
46.在用户使用应用的过程中,当用户点击进入到包含动画的功能界面(需要显示动画的功能界面,可以表示为activity)时,即应用中的第一进程进入到包含动画的功能界面时,第一进程可以在该功能界面中需要显示动画的位置创建一个surfaceview,该surfaceview可以记为本地surfaceview,可以作为动画在第一进程的播放区域。
47.s104:第一进程将动画信息以及surfaceview对应的surface字段发送给第二进程。
48.第一进程在成功创建surfaceview后,可以生成与surfaceview对应的surface字段。第一进程可以获取到该surface字段并将该surface字段发送给第二进程。其中,surface字段可以用于标记surfaceview的视图绘制缓冲区,基于该surface字段可以再创建出一个新的surfaceview,这两个surfaceview的视图内容是共享的。
49.第一进程在将surface字段发送给第二进程时,还可以同时将需要显示的动画信息发送给第二进程。其中,动画信息可以是动画信息source,动画信息source可以表征在功能界面中需要播放的动画内容,可以用于第二进程进行动画绘制。
50.可选地,作为一个实施例,第一进程在将上述动画信息以及surface字段发送给第二进程时,还可以将功能界面对应的窗口令牌(windowtoken字段)以及动画显示区域的大小信息发送给第二进程。其中,窗口令牌是功能界面自带的属性标识(操作系统中所有界面显示的最大单位是window,所有ui元素(比如按钮、列表等)都需要放到一个window里才能显示,每个window有自己的token字段来标识和区分自己)。动画播放区域的大小信息可以表征动画播放区域的大小,具体可以包括动画播放区域的长度和宽度信息。本实施例中,窗口令牌和动画显示区域的大小信息可以用于第二进程创建window对象,该window对象可以用于第二进程添加显示由第二进程基于动画信息绘制得到的动画播放视图,以便第二进程在绘制动画时可以基于window对象尽量模拟动画在第一进程的功能界面中的真实显示环境,提高动画显示环境和动画绘制环境之间的兼容性。
51.可选地,作为一个实施例,第一进程在将动画信息以及surfaceview对应的surface字段发送给第二进程(可选地,还可以同时发送功能界面的窗口令牌和动画显示区域的大小信息)时,可以通过接口描述语言(android interface definition language,aidl)、广播、contentprovider、文件、socket中的至少一种方式发送,即在进程之间传输数据时,可以通过aidl、广播、contentprovider、文件、socket中的至少一种方式实现。其中,针对广播这种发送方式而言,其可以支持直接传输对象,不需要自己处理对象的数据流转换,但是,广播传递数据时每个参数需要人为预定参数key,然后发送方和接收方必须按照约定来写入和读取,过程相对繁琐一些。而aidl相比广播而言,对传递的参数类型和个数有
更明确的控制,更易于维护,因此,本实施例可以优选将aidl作为发送方式。
52.在将aidl作为发送方式的情况下,若第一进程将动画信息、surfaceview对应的surface字段、功能界面的窗口令牌以及动画显示区域的大小信息发送给第二进程,则传输的数据协议可以如下:
53.interface iprocessui{
54.void surfacecreated(in surface surface,int width,int height,in ibinder windowtoken,in animationsourceinfo source);
55.void surfacechanged(in surface surface);
56.void surfacedestroyed(in surface surface);
57.}
58.其中,surfacecreated接口参数中包含surface字段、windowtoken字段(即窗口令牌)、需要播放的动画信息source及动画显示大小信息。surface和ibinder类型均支持跨进程传输,自定义的animationsourceinfo需要实现parceable接口才能支持。
59.s106:第二进程根据动画信息创建动画播放视图,并根据动画播放视图在surface字段对应的画布对象中进行动画绘制。
60.第一进程在将动画信息和surface字段发送给第二进程后,第二进程可以使用第三方或自定义的动画框架并基于动画信息创建动画播放视图(即动画的view),然后基于surface字段获取与该surface字段对应的画布对象(即canvas对象),根据动画播放视图在画布对象中进行动画绘制。
61.可选地,作为一个实施例,若第一进程在将动画信息和surface字段发送给第二进程时,还将窗口令牌和动画播放区域的大小信息发送给第二进程,则第二进程还可以基于窗口令牌以及动画显示区域的大小信息创建window对象,以便第二进程在根据动画播放视图绘制动画时可以基于window对象尽量模拟动画在第一进程的功能界面中的真实显示环境,提高动画显示环境和动画绘制环境之间的兼容性。
62.第一进程在根据窗口令牌以及动画显示区域的大小信息创建window对象时,还可以设置window对象的参数。window对象的参数可以包括window对象的窗口大小、窗口类型、窗口特性、窗口的透明度、窗口令牌、支持的色彩范围以及显示时的摆放方向中的至少一项。
63.窗口大小可以是窗口的高度和宽度(即height和width),第二进程在设置window对象的窗口大小时,可以根据接收到的动画显示区域的大小信息,将窗口大小设置为与动画显示区域的大小一致,这样,可以避免后续第一进程和第二进程共享动画内容时,第一进程或第二进程的动画内容显示不全或者有多余的黑色区域。
64.窗口类型(即type)可以包括type_application_panel类型(适合应用内显示)和type_phone(适合应用外显示)等类型,考虑到本实施例中的动画是显示在应用内,不需要显示在应用外,因此,可以将window对象的窗口类型设置为type_application_panel类型。
65.窗口特性(即flags)可以是对焦点、触摸事件、显示范围等,考虑到本实施例中的window对象只用于提供动画的播放环境,不需要有点击动作,也不需要有焦点和触摸事件,因此,可以将窗口特性设置为不接手焦点、不处理触摸事件以及不可点击。
66.窗口的透明度(即alpha)可以设置为透明或不透明等,考虑到本实施例中的
window对象只用于提供动画的播放环境,不想让用户看到,因此,可以将窗口透明度设置为0,即完全透明,对于用户不可见。
67.窗口令牌(token)用来标识window对象,本实施例可以将窗口令牌设置为第一进程发送给第二进程的窗口令牌,表征第二进程创建的window依附于第一进程的功能界面所在的window。通常而言,如果想把window添加到屏幕显示出来,要么有悬浮窗权限(系统会自动生成token),要么使用应用内的已有window的token,由于本实施例中不需要将动画显示到应用外,因此也就不需要申请悬浮窗权限,而是将功能界面所在window的token传输给第二进程,由第二进程新建的window使用相同的token即可。
68.支持的色彩范围可以由format表示,本实施例中考虑到动画一般会有多种色彩,因此,为了保证最大的兼容性和最好的还原度,可以将支持的色彩范围设置为rgba_8888。
69.显示时的摆放方向可以由gravity表示,本实施例中考虑到该摆放方向并不影响window对象的功能实现,因此,为了开发调试方便,可以将显示时的摆放方向设置为一般的常用方向,即靠顶部和靠左。
70.在一种可能的实现方式中,第二进程设置的window对象的参数如下:
71.val layoutparams=windowmanager.layoutparams()
72.layoutparams.width=msurfacewidth
73.layoutparams.height=msurfaceheight
74.layoutparams.type=windowmanager.layoutparams.type_application_panel
75.layoutparams.flags=
76.windowmanager.layoutparams.flag_not_focusable or windowmanager.layoutparams.flag_not_touchable or windowmanager.layoutparams.flag_not_touch_modal
77.layoutparams.format=pixelformat.rgba_8888
78.layoutparams.alpha=0f
79.layoutparams.token=token
80.layoutparams.gravity=gravity.top or gravity.left
81.第二进程在创建window对象并设置window对象的参数后,在根据动画播放视图在surface字段对应的画布对象中进行动画绘制时,具体可以包括以下s1061和s1062:
82.s1061:将动画播放视图添加显示到window对象中。
83.第二进程在使用第三方或自定义的动画框架并基于动画信息创建动画播放视图后,可以将动画播放视图添加到window对象中,再使用系统api将window添加显示出来。这样动画就可以在第二进程中播放并显示了,考虑到在创建window对象时,window对象的窗口透明度为0,因此,在window对象中播放显示的动画对于用户而言是不可见的。
84.s1062:获取window对象的根视图,并根据根视图在surface字段对应的画布对象中进行动画绘制。
85.在将动画播放视图添加显示到window对象中后,在surface字段对应的画布对象中绘制动画时,就需要获取到window对象中的所有画面内容,以便根据获取到的画面内容在画布对象中进行动画绘制。其中,在获取window对象中的所有画面内容时,可以获取window对象的根视图(即根view),获取到根视图就意味着获取到了window对象中的所有画
面内容。之后,在基于画面内容进行动画绘制时,可以基于第一进程发送给第二进程的surface字段获取到对应的画布对象,然后就可以另window对象的根view在该画布上绘制内容,即将动画的内容显示到了该画布上。由于该画布所属的surface字段在第一进程中有对应的surfaceview,因此在画布中绘制的动画内容可以在第一进程的surfaceview中同步显示出来。
86.可选地,作为一个实施例,在获取window对象的根视图,并根据根视图在surface字段对应的画布对象中进行动画绘制时,还可以启动一个线程作为绘制线程,基于该绘制线程,可以每隔设定时间间隔获取window对象的根视图,然后根据获取到的根视图在surface字段对应的画布对象中进行动画绘制。其中,设定时间间隔可以根据实际需求进行设置,可选地,可以设置为16ms左右,这样可以在1秒内绘制约60帧画面内容,一方面可以保证对于用户而言看到的是动态的画面,另一方面还可以避免绘制的频率过快导致资源消耗过多以及绘制的频率过慢影响动画的呈现效果。
87.需要说明的是,在本实施例中,第二进程使用window对象的目的是为了让动画框架能真正显示到屏幕上,尽量模拟其显示到第一进程的环境,可选地,也可以不使用window对象,而是直接手动指定动画框架需要的尺寸位置等数据,但是这种方式的兼容性较差,因为动画框架并不是真正显示到屏幕上的,所以本实施例优选使用window对象来令其真实的显示到屏幕上,然后设置window对象为全透明以便用户察觉不到。
88.可选地,作为一个实施例,考虑到在用户进入功能界面后,可以随时退出该功能界面,在退出功能界面后,第二进程实际上就无需进行动画绘制了,或者是绘制的动画是无效的,因此,为了避免无效绘制同时减少不必要的资源消耗,第二进程在根据获取到的根视图,在surface字段对应的画布对象中进行动画绘制时,还可以包括以下步骤:
89.确定surface字段是否失效;
90.在surface字段未失效的情况下,根据获取到的根视图,在surface字段对应的画布对象中进行动画绘制。
91.surface字段失效可以表征用户退出了当前的功能界面,反之,surface字段未失效可以表征用户没有退出当前的功能界面。第二进程在绘制动画的过程中,可以监测surface字段是否失效,若未失效,则可以说明用户未退出当前的功能界面,此时可以根据获取到的根视图,在surface字段对应的画布对象中进行动画绘制。反之,若失效则可以说明用户退出了当前的功能界面,此时可以取消动画绘制,同时可以结束第二进程,这样可以避免对动画的无效绘制,减少不必要的资源消耗。
92.为了便于理解动画绘制的过程,可以参见图2。图2是本技术的一个实施例动画绘制方法的流程示意图,图2所示实施例的执行主体可以是用于绘制动画的绘制线程,具体可以包括以下步骤。
93.s201:确定surface字段是否失效。
94.若是,则执行s207;若否,则执行s202。
95.s202:记录时间戳t1。
96.s203:获取window对象的根视图。
97.s204:根据获取到的根视图,在surface字段对应的画布对象中进行动画绘制。
98.s205:确定当前时间距离t1的差值t2是否超过设定时间间隔t3。
99.若是,则执行s202;若否,则执行s206。
100.s206:等待t3-t2的时长。
101.在等待t3-t2的时长后,可以执行s202。
102.s207:结束。
103.图2所示的实施例,在surface字段未失效的情况下,可以每隔设定时间间隔绘制一帧动画,保证绘制得到的画面是动态的,在surface字段失效的情况下,可以结束动画绘制并退出绘制进程,从而避免了无效绘制,同时还可以减少不必要的资源消耗。
104.s108:第一进程在surfaceview中同步显示在画布对象中绘制的动画。
105.本实施例中,第二进程在surface字段对应的画布对象中进行动画绘制时,由于该画布对象所属的surface字段在第一进程有对应的surfaceview,因此,在画布对象中绘制的动画内容可以在第一进程的surfaceview里同步显示出来,从而可以在功能界面中显示动画。
106.如图3(a)和3(b)所示。图3(a)所示的功能界面为手机加速场景下的功能界面,该功能界面中需要显示手机加速的动画。当产品进程(即第一进程)进入该界面时,可以在动画显示位置创建surfaceview,然后将动画绘制过程交由图3(b)所示的动画进程(即第二进程)实现。动画进程可以基于上述s106中记载的方法进行动画绘制得到图3(b)所示的手机加速的动画,此时图3(a)所示的界面中可以同步显示手机加速的动画。其中,图3(b)所示的动画对于用户而言是不可见的。
107.为了便于理解本技术实施例提供的技术方案,可以参见图4。图4是本技术的一个实施例动画显示方法的流程示意图,具体可以包括以下步骤:
108.s401:当第一进程进入到包含动画的功能界面时,在功能界面的动画显示位置创建surfaceview。
109.s402:第一进程将动画信息、surfaceview对应的surface字段、功能界面对应的窗口令牌以及动画显示区域的大小信息发送给第二进程。
110.第一进程可以通过aidl、广播、contentprovider、文件、socket中的至少一种方式在第一进程和第二进程之间进行信息传递。
111.s403:第二进程根据窗口令牌和动画显示区域的大小信息创建window对象并设置window对象的参数。
112.window对象的参数包括窗口大小、窗口类型、窗口特性、窗口的透明度、窗口令牌、支持的色彩范围以及显示时的摆放方向。其中,window对象的窗口大小与动画显示区域的大小信息一致,window对象的窗口类型为type_application_panel类型,window对象的窗口特性为不可点击和不处理触摸事件,window对象的窗口透明度为0,window对象的窗口令牌为功能界面对应的窗口令牌,window对象支持的色彩范围为rgba_8888,window对象显示时的摆放方向为靠顶部和靠左。
113.s404:第二进程根据动画信息创建动画播放视图。
114.s405:第二进程将动画播放视图添加显示到window对象中。
115.s406:第二进程启动绘制线程,基于绘制线程,每隔设定时间间隔获取window对象的根视图。
116.s407:第二进程根据获取到的根视图,在surface字段对应的画布对象中进行动画
绘制。
117.可选地,第二进程在进行动画绘制时,还可以确定surface字段是否失效,若未失效,则根据获取到的根视图,在surface字段对应的画布对象中进行动画绘制,若失效,则可以结束动画绘制,同时还可以退出第二进程,具体实现方式可以参见图2所示实施例,这里不再详细说明。
118.s408:第一进程在surfaceview中同步显示在画布对象中绘制的动画。
119.上述s401至s408的具体实现方式可以参见图1所示实施例中相应步骤的具体实现,这里不再详细说明。
120.本技术实施例利用surfaceview跨进程的特性,当第一进程进入到包含动画的功能界面时,通过在功能界面显示动画的位置创建surfaceview,并将需要显示的动画信息和surfaceview对应的surface字段发送给第二进程,可以由第二进程实现动画的绘制,且第二进程在绘制动画时,第一进程可以基于surfaceview跨进程的特性在其创建的surfaceview中同步显示该动画,从而可以在当前的功能界面中显示动画。由于动画的绘制是由第二进程实现,而第二进程与第一进程之间是相互隔离的,因此当第二进程在动画绘制过程中出现问题时,也不会影响第一进程的正常运行,从而避免用户无法正常使用应用。此外,由于动画的绘制是由第二进程实现,因此还可以降低第一进程占用的内存,提高进程的稳定性。
121.上述对本技术特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
122.图5是本技术的一个实施例电子设备的结构示意图。请参考图5,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-access memory,ram),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
123.处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industry standard architecture,工业标准体系结构)总线、pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
124.存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
125.处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成动画显示装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
126.当第一进程进入到包含动画的功能界面时,在所述功能界面的动画显示位置创建surfaceview;
127.所述第一进程将动画信息以及所述surfaceview对应的surface字段发送给第二进程;
128.所述第二进程根据所述动画信息创建动画播放视图,并根据所述动画播放视图在所述surface字段对应的画布对象中进行动画绘制;
129.所述第一进程在所述surfaceview中同步显示在所述画布对象中绘制的动画。
130.上述如本技术图5所示实施例揭示的动画显示装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
131.该电子设备还可执行图1、图2和图4的方法,并实现动画显示装置在图1、图2和图4所示实施例中的功能,本技术实施例在此不再赘述。
132.当然,除了软件实现方式之外,本技术的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
133.本技术实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1、图2和图4所示实施例的方法,并具体用于执行以下操作:
134.当第一进程进入到包含动画的功能界面时,在所述功能界面的动画显示位置创建surfaceview;
135.所述第一进程将动画信息以及所述surfaceview对应的surface字段发送给第二进程;
136.所述第二进程根据所述动画信息创建动画播放视图,并根据所述动画播放视图在所述surface字段对应的画布对象中进行动画绘制;
137.所述第一进程在所述surfaceview中同步显示在所述画布对象中绘制的动画。
138.图6是本技术的一个实施例动画显示装置60的结构示意图。请参考图6,在一种软件实施方式中,所述动画显示装置60可包括:创建模块61、发送模块62、动画绘制模块63以及显示模块64,其中:
139.创建模块61,当第一进程进入到包含动画的功能界面时,在所述功能界面的动画
显示位置创建surfaceview;
140.发送模块62,将动画信息以及所述surfaceview对应的surface字段发送给第二进程;
141.动画绘制模块63,根据所述动画信息创建动画播放视图,并根据所述动画播放视图在所述surface字段对应的画布对象中进行动画绘制;
142.显示模块64,在所述surfaceview中同步显示在所述画布对象中绘制的动画。
143.可选地,作为一个实施例,所述发送模块62将动画信息以及所述surfaceview对应的surface字段发送给第二进程,包括:
144.通过接口描述语言aidl、广播、contentprovider、文件、socket中的至少一种方式,将动画信息以及所述surfaceview对应的surface字段发送给所述第二进程。
145.可选地,作为一个实施例,所述发送模块62将所述功能界面对应的窗口令牌以及动画显示区域的大小信息发送给所述第二进程;
146.所述动画绘制模块63根据所述窗口令牌以及所述动画显示区域的大小信息创建window对象,所述window对象用于添加显示所述动画播放视图。
147.可选地,作为一个实施例,所述动画绘制模块63在根据所述窗口令牌以及所述动画显示区域的大小信息创建window对象时,还包括:
148.设置所述window对象的参数,所述参数包括窗口大小、窗口类型、窗口特性、窗口的透明度、窗口令牌、支持的色彩范围以及显示时的摆放方向中的至少一项;
149.其中,所述window对象的窗口大小与所述动画显示区域的大小信息一致,所述window对象的窗口类型为type_application_panel类型,所述window对象的窗口特性为不可点击和不处理触摸事件,所述window对象的窗口透明度为0,所述window对象的窗口令牌为所述功能界面对应的窗口令牌,所述window对象支持的色彩范围为rgba_8888,所述window对象显示时的摆放方向为靠顶部和靠左。
150.可选地,作为一个实施例,所述动画绘制模块63根据所述动画播放视图在所述surface字段对应的画布对象中进行动画绘制,包括:
151.将所述动画播放视图添加显示到所述window对象中;
152.获取所述window对象的根视图,并根据所述根视图在所述surface字段对应的画布对象中进行动画绘制。
153.可选地,作为一个实施例,所述动画绘制模块63获取所述window对象的根视图,并根据所述根视图在所述surface字段对应的画布对象中进行动画绘制,包括:
154.启动绘制线程;
155.基于所述绘制线程,每隔设定时间间隔获取所述window对象的根视图;
156.根据获取到的所述根视图,在所述surface字段对应的画布对象中进行动画绘制。
157.可选地,作为一个实施例,所述动画绘制模块63根据获取到的所述根视图,在所述surface字段对应的画布对象中进行动画绘制,包括:
158.确定所述surface字段是否失效;
159.在所述surface字段未失效的情况下,根据获取到的所述根视图,在所述surface字段对应的画布对象中进行动画绘制。
160.本技术实施例提供的动画显示装置60还可执行图1、图2和图4的方法,并实现动画
显示装置在图1、图2和图4所示实施例的功能,本技术实施例在此不再赘述。
161.总之,以上所述仅为本技术的较佳实施例而已,并非用于限定本技术的保护范围。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
162.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
163.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
164.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
165.本技术中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1