Android10多屏开机动画

        针对IVI多屏方案,部分场景可能会有支持不同屏播放不同的开机动画的需求,甚至是有动态支持替换动画的需求。原生的BootAnimation并不支持此功能,因此需要针对这种需求,从DisplayManagerService->BootAnimation->SurfaceFlinger的通路进行修改支持。

        DisplayManagerService的修改,主要是为了避免系统启动初期DisplayManagerService的对各个屏的layerstack的设置。因为启动前期并没有任何的window,因此在DMS来看,所有的display是没有内容的,因此直接使用了主显的显示内容。

        BootAnimation的修改,就是要支持多个动画的播放、动画资源文件的选择,以及各display的layerstack的设置。

        SurfaceFlinger的修改,主要是支持了多个屏同时进入动画的显示,SurfaceFlinger原生的框架中,对所有启动时已接入的显示设备是同时加载的,但默认没有设置layerstack、powermode等信息,因此除主屏外,其他屏的初始化都是在DisplayManagerService启动后才进行的,因此可以看到多屏的动画在播放时,是主屏先显示,让等隔几秒后其他屏才显示动画。

SurfaceFlinger层的修改

        SurfaceFlinger层主要解决的是所有副屏的初始化问题,主要是powermode的设置:

diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
ind

你可能感兴趣的:(Android案例分析,Android,android)