一种安卓电视背景快速切换方法、框架、服务器及存储介质与流程

文档序号:16247959发布日期:2018-12-11 23:45阅读:247来源:国知局
一种安卓电视背景快速切换方法、框架、服务器及存储介质与流程

本发明涉及安卓电视和平板应用技术领域,具体涉及一种安卓电视背景快速切换方法、框架、服务器及存储介质。

背景技术

目前,安卓宽屏设备(android电视、android平板)等在提升用户体验方面会充分挖掘大屏优点,大屏设备在内容展示方面能给用户带来更震撼的视觉冲击,相同分辨率的图片或视频(1080p及以上级别),在5.5英寸屏幕手机上的预览效果与在64英寸屏幕安卓电视上的预览效果差异非常大,这也是智能手机朝大屏方向发展的根本原因。

有鉴于此,视频直播类应用为提升用户感官体验,会在用户操作切换视频直播内容时,动态切换窗口背景(dynamicallychangingbackgroundresource,简称dcbr),以此来凸显出高清资源的视觉效果。当前dcbr主流的实现方式,首先是获取图片资源(bitmap、drawable),然后开启后台任务将图片资源适配到目标背景容器(imageview、view、window),最后目标背景容器会将图片资源绘制到自身图层的最底层。在这个过程中,选取目标背景容器和资源绘制方案尤为重要。

目前,开发领域选取目标背景容器主要选用imageview或者window,imageview为android系统源生的图片载体,而window为整个应用可视化内容的最外层容器,二者都具有较高的稳定性和兼容性,但缺点是内部缺乏高效的资源回收机制和扩展性,无法对其进行业务延展。而资源绘制方案多采用先生成图片资源(bitmap),然后获取bitmap的色彩资源值,然后将色彩资源值绘制到canvas上,这个绘制过程在ui线程中进行,并采取一步绘制到位的策略,整个绘制过程不可控。



技术实现要素:

鉴于现有技术存在的问题,本发明的目的是提供一种安卓电视背景快速切换方法、框架、服务器及存储介质,克服了传统技术方案的缺陷,运用fragment为目标背景页面,由于fragment本质就是viewgroup,其相比view具有较高的业务扩展性,因此能够很好的嵌入大量的背景切换业务,且在fragment绘制背景资源过程中加入动画插值器来控制绘制速率,从而实现绘制的可控性。

为了实现上述目的,本发明采用的技术方案为一种安卓电视背景快速切换方法,所述方法包括以下步骤:

s1、创建背景资源,从服务器端获取背景资源链接,使用图片加载框架下载图片字节流,以字节数据格式存储到本地数据库,并建立临时内存缓存,运用canvas画布绘制背景;

s2、选取fragment碎片器为目标背景页面,获取fragment后创建新的空白背景页面,并将新建空白背景页面添加至已有页面的最底层,所述canvas画布为fragment的组成部分,添加绘制估值器用于控制canvas画布的绘制,估值器会提前计算即将绘制的资源目标值;

s3、创建时态动画,用于控制canvas画布容器背景资源绘制的进度,改变背景资源,实现背景快速切换;

s4、对比分析采用imageview与采用fragment作为背景绘制容器在绘制的资源占用情况。

在上述技术方案中,所述步骤s1中,字节数据存储于所述临时内存的格式为bitmap格式。

在上述技术方案中,所述步骤s1中,运用canvas画布绘制背景包括以下步骤:

s11、canvas画布在绘制背景前,提前从所述临时内存中读取bitmap格式缓存数据;

s12、如果所述内存中没有所述bitmap缓存数据,将通过读取本地数据库中所述下载的图片字节数据流,将其转换bitmap格式,并将转换完成的bitmap缓存到内存中,等待后续canvas画布绘制使用。

在上述技术方案中,所述步骤s2中,所述估值器为双精度浮点型估值器。

在上述技术方案中,所述步骤s3包括以下步骤:

s31、测量fragment背景容器宽高,同时将所述bitmap进行缩放,缩放的目标分辨率为fragment背景容器宽高;

s31、创建时态动画,给所述时态动画赋予时间值,动画需要所述时间值内完成,时间短执行快,时间长执行慢;

s32、给步骤s31中创建动画设置加减速插值器,用于控制动画的执行速率和平顺性,加减速插值器采用s型平滑算法,所述s型平滑算法的函数为:其中y为动画执行的进度值,x为时间值取值区间为[0,200],x的单位为ms,通过加减速插值器,每隔1ms,时态动画就会在执行过程中会输出对应当前时间的进度值y;

在上述技术方案中,所述双精度浮点型估值器通过执行的进度值y计算动画执行下一步的目标值,通过所述估值器提前计算出时态动画下一步即将执行的目标值,如果将目标值置为上一步的目标值,那么时态动画就不会更新,此时canvas就不会执行新的绘制。在上述技术方案中,所述步骤s4包括以下步骤:

s41、运用imageview为背景绘制容器,在200ms内,绘制完成60组资源背景的内存消耗的峰值在38m~40m之间;

s42、运用fragment为背景绘制容器,在200ms内,绘制完60组资源背景的内存消耗峰值在34m~38m之间。

本发明还公开一种安卓电视背景快速切换框架,所述框架包括背景资源创建层、背景容器选取层、估值器控制层和资源消耗分析层;

背景资源创建层,用于创建背景资源,从服务器端获取背景资源链接,使用图片加载框架下载图片字节流,以字节数据格式存储到本地数据库,并建立临时内存缓存,运用canvas画布绘制背景;

背景容器选取层,用于选取fragment碎片器为目标背景页面,获取fragment后创建新的空白背景页面,并将新建空白背景页面添加至已有页面的最底层,所述canvas画布为fragment的组成部分,添加绘制估值器用于控制canvas画布的绘制,估值器会提前计算即将绘制的资源目标值;;

估值器控制层,用于创建时态动画,控制canvas画布容器背景资源绘制的进度,改变背景资源,实现背景快速切换;

资源消耗分析层,用于对比分析采用imageview与采用fragment作为背景绘制容器在绘制的资源占用情况。

本发明还公开一种安卓电视背景快速切换框架,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述一种安卓电视背景快速切换方法的步骤。

本发明还公开一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任一项所述一种安卓电视背景快速切换方法的步骤。

本发明一种安卓电视背景快速切换方法、框架、服务器及存储介质,具有以下有益效果:(1)采用fragment作为背景绘制的页面,同时可穿插较多的业务逻辑,例如加入动画和插值器、估值器等;(2)采用fragment作为绘制容器,在canvas中加入估值器,根据时态动画的插值器分度值可提前计算出下一步资源绘制的目标值,通过估值器的返回值来决定是否进行下一步绘制,从而实现资源绘制的可控性;(3)采用fragment作为背景绘制的页面,相较于imageview,其资源消耗低,可实现大批量的资源快速绘制;

附图说明

图1为本发明实施例一提供一种安卓电视背景快速切换方法的流程图;

图2为本发明实施例二提供的canvas画布绘制背景方法流程图;

图3为本发明实施例三提供的估值器控制容器背景资源绘制方法流程图;

图4为本发明实施例四提供的资源消耗对比方法流程图;

图5为本发明实施例五提供的一种安卓电视背景快速切换框架模块图;

图6为本发明实施例六提供的服务器的结构示意图。

具体实施方式

本发明提供一种安卓电视背景快速切换方法、框架、服务器及存储介质,运用fragment为目标背景页面,由于fragment本质就是viewgroup,其相比view具有较高的业务扩展性,因此能够很好的嵌入大量的背景切换业务,且在fragment绘制背景资源过程中加入动画插值器来控制绘制速率,从而实现绘制的可控性。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明如图1所示实施例一提供一种安卓电视背景快速切换方法,所述方法包括以下步骤:

s1、创建背景资源,从服务器端获取背景资源链接,使用图片加载框架下载图片字节流,以字节数据格式存储到本地数据库,并建立临时内存缓存,运用canvas画布绘制背景;

可选的,所述字节数据存储于所述临时内存的格式为bitmap格式。

所述canvas画布安卓系统可视化控件(view、viewgroup)以及可视化资源(bitmap、drawable)的绘制作用组件单元;

其中,view(视图)是android系统的一个超类,是android系统应用层界面可视化的基本组件单元;所述viewgroup(视图组)是view的子类,是android系统可视化组件view的基本容器单元;所述bitmap(位图)扩展名可以是.bmp或者.dib。位图是windows标准格式图形文件,它将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2、4、8、16、24和32位色彩;所述drawable(可绘制资源)可绘制物,表示一些可以绘制在canvas上的对象,其本质和bitmap类似;

可选的,为实现服务器端控制,在获取背景资源方式上采取动态获取方式。

s2、选取fragment碎片器为目标背景页面,获取fragment后创建新的空白背景页面,并将新建空白背景页面添加至已有页面的最底层,所述canvas画布为fragment的组成部分,添加绘制估值器用于控制canvas画布的绘制,估值器会提前计算即将绘制的资源目标值;

所述fragment(碎片器)为一个具有自己生命周期的控件,它有自己的处理输入事件的能力,有自己的生命周期,又必须依赖于activity,能互相通信和托管;所述activity为安卓系统的四大组件(activity、service、broadcastreceiver、contentprovider)之一,activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应;

具体的,基于安卓碎片化问题,fragment的本质是viewgroup,但是为了实现不同设备的适配需求,fragment具有较高的业务扩展性和强内聚性。选取fragment作为背景容器,可通过fragment获取其自身的decorview(最底层根view),由于decorview位于整个activity视图树(viewtree)节点的根节点处,因此decorview的layer层级处于整个window的最底层,非常适合作为window背景资源绘制的“画板”。

所述decorview为当前页面(activity、frgament)窗口最顶层的视图,也就是根视图。所述layer(视图图层)安卓系统中绘制图像的基本容器单元,类似于photoshop中的图层,图层以层叠方式进行展示;

s3、创建时态动画,用于控制canvas画布容器背景资源绘制的进度,改变背景资源,实现背景快速切换;

可选的,所述估值器为双精度浮点型估值器typeevaluator<double>,所述typeevaluator可以更具目标对象的属性来改变其属性值,比如要改变颜色属性,可以直接改变其值,而interpolator改变的是进度,可以直接指定瞬间完成动画整体的80%。所述interpolator(插值器)负责控制动画变化的速率,使得基本的动画效果能够以匀速、加速、减速、抛物线速率等各种速率变化。

所述估值器是设置属性值从初始值过渡到结束值的变化具体数值,插值器决定值的变化规律(匀速、加速),即决定的是变化趋势;而接下来的具体变化数值则交给而估值器,属性动画特有的属性,协助插值器实现非线性运动的动画效果。所述非线性运动,动画改变的速率不是一成不变的,如加速&减速运动都属于非线性运动。

s4、对比分析采用imageview与采用fragment作为背景绘制容器在绘制的资源占用情况。

所述imageview图像视图,直接继承自view类,它的主要功能是用于显示图片。

本发明如图2所示实施例二提供运用canvas画布绘制背景的方法,所述方法包括以下步骤:

s11、canvas画布在绘制背景前,提前从所述临时内存中读取bitmap格式缓存数据;

s12、如果所述内存中没有所述bitmap缓存数据,将通过读取本地数据库中所述下载的图片字节数据流,将其转换bitmap格式,并将转换完成的bitmap缓存到内存中,等待后续canvas画布绘制使用。

本发明如图3所示实施例三提供估值器控制容器背景资源绘制方法,所述方法包括以下步骤:

s31、测量fragment背景容器宽高,同时将所述bitmap进行缩放,缩放的目标分辨率为fragment背景容器宽高;

可选的,运用displaymetrics进行测量背景容器宽高[width,height],所述displaymetrics为android的类,可以得到分辨率等信息。

构造函数displaymetrics不需要传递任何参数;getdefaultdisplay()方法将取得的宽高维度存放于displaymetrics对象中,而取得的宽高维度是以像素为单位(pixel),“像素”所指的是“绝对像素”而非“相对像素”。

s31、创建时态动画,给所述时态动画赋予时间值,动画需要所述时间值内完成,时间短执行快,时间长执行慢;

可选的,通过安卓sdk(softwaredevelopmentkit)软件开发工具包中原生的timeanimator来创建时态动画,同时动画还必须设置执行时间,其中动画默认值为200ms。所述timeanimator提供了一个简单的回调机制,通过timeanimator.timelistener,在动画的每一帧处通知你。这个动画器没有时间,插值或是对象值设定。回调监听器为每一帧动画接受信息,包括总运行时间和从前一帧到现在的运行时间。视图动画只能作用于view,而且视图动画改变的仅仅是view的绘制效果,view的真正属性没有改变。而属性动画则可以改变真正的属性。大致的意思就是属性动画就是在一段时间内,按照一定的规律改变对象的属性,使对象展示出动画效果。

s32、给步骤s31中创建动画设置加减速插值器,用于控制动画的执行速率和平顺性;

可选的,加减速插值器的计算函数采用s型平滑算法,所述s型平滑算法的函数为:其中y为动画执行的进度值,x为时间值[0,200],x的单位为ms,通过加减速插值器,每隔1ms,动画就会在执行过程中会输出对应当前时间的进度值y。

所述加减速插值器(acceleratedecelerateinterpolator),速度从0开始,先加速后加速,最后速度为0,即为其变化率开始和结束缓慢,但通过中间加速。

可选的,所述估值器通过进度值y计算动画执行下一步的目标值。构建的doubleevaluator估值器,其中fraction=y,evaluate函数计算的返回值即为动画下一步要执行的目标值,通过估值器提前计算出动画下一步即将执行的目标值,如果将目标值置为上一步的目标值,那么动画就不会更新,此时资源就不会执行新的绘制,总而达到控制资源绘制的可控性;

运用双精度浮点型估值器(typeevaluator<double>)实现绘制过程的可控性,typeevaluator<double>的实现过程如下:

本发明如图4所示实施例四提供资源消耗对比方法,所述方法包括以下步骤:

s41、运用imageview为背景绘制容器,在200ms内,绘制完成60组资源背景的内存消耗的峰值在38m~40m之间;

s42、运用fragment为背景绘制容器,在200ms内,绘制完60组资源背景的内存消耗峰值在34m~38m之间;

通过上述分析得出采用fragment作为背景资源绘制容器,其内存消耗较imageview少2m大小,如果资源数量在100组以上,则内存消耗的差距将进一步拉大。其次,采用fragment结合估值器可实现绘制的可控性。

本发明提供一种安卓电视背景快速切换框架,所述框架包括背景资源创建层、背景容器选取层、估值器控制层和资源消耗分析层;

背景资源创建层,用于创建背景资源,从服务器端获取背景资源链接,使用图片加载框架下载图片字节流,以字节数据格式存储到本地数据库,并建立临时内存缓存,运用canvas画布绘制背景;

背景容器选取层,用于选取fragment碎片器为目标背景页面,获取fragment后创建新的空白背景页面,并将新建空白背景页面添加至已有页面的最底层,所述canvas画布为fragment的组成部分,添加绘制估值器用于控制canvas画布的绘制,估值器会提前计算即将绘制的资源目标值;

估值器控制层,用于创建时态动画,控制canvas画布容器背景资源绘制的进度,改变背景资源,实现背景快速切换;

资源消耗分析层,用于对比分析采用imageview与采用fragment作为背景绘制容器在绘制的资源占用情况。

本发明如图6所示实施例六提供一种安卓电视背景快速切换框架的服务器结构示意图,所述实施例的服务器包括:处理器60、存储器61以及存储在所述存储器61中并可在所述处理器60上运行的计算机程序62。所述处理器60执行所述计算机程序62时实现上述各方法实施例中的步骤,所述处理器60执行所述计算机程序62时实现上述装置实施例中各模块的功能。

所述一种安卓电视背景快速切换框架的服务器可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备,所述一种安卓电视背景快速切换框的服务器可包括,但不限于,处理器60、存储器61。图6仅仅是对此服务器的示例,并不构成对此服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,所述一种直播房间列表下拉获取更多房间实现系统的服务器还可以包括输入输出设备63、显示设备64等。

所述处理器60可以是中央处理单元,还可以是其他通用处理器、数字信号处理器、专用集成电路、现成可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器61可以是所述一种安卓电视背景快速切换框的服务器的内部存储单元、硬盘或内存。所述存储器61也可以是所述服务器的外部存储设备,或配备的插接式硬盘,智能存储卡,安全数字卡,闪存卡等。

进一步地,所述存储器61还可以既包括所述服务器的内部存储单元也包括外部存储设备。所述存储器61用于存储所述计算机程序以及所述电子设备所需的其他程序和数据。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。

所述的输入输出设备63可用于接收输入的数字或字符信息,具体的,输入输出设备63还可以包括但不限于键盘、鼠标、操作杆等中的一种和多种。

所述的显示设备64可用于显示由用户输入的信息或提供给用户信息以及终端的各种菜单,显示设备64可包括显示面板,可选的,可采用液晶显示器。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实施例的模块、方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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