ANDROID图形系统详解

ANDROID图形系统详解

ID:41567003

大小:58.24 KB

页数:5页

时间:2019-08-27

ANDROID图形系统详解_第1页
ANDROID图形系统详解_第2页
ANDROID图形系统详解_第3页
ANDROID图形系统详解_第4页
ANDROID图形系统详解_第5页
资源描述:

《ANDROID图形系统详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、ANDROID图形系统详解木文试图讲述Android图形系统的底层实现。Android图形系统底层实现非常复杂,文档较少,没冇使用比较流行的图形组建如Xwindow,Cairo等。Android中的图形系统采用Client/Server架构。Server(即SurfaceFlingcr)主耍由c++代码编写而成。Client端代码分为两部分,一部分是由Java提供的供应用使用的api,另一部分则是由C++写成的底层实现。下图概要介绍了android图形系统的架构以及使用到的主要组件。Android图形系统中一个重要的概念和线索是sur

2、face®View及其子类(如TextView,Button)要画在surface上。每个surface创建一个Canvas对象(但属性时常改变),用来管理view在surfaceJ:的绘图操作,如画点画线。每个canvas对象对应一个bitmap,存储画在surface上的内容。每个Surface通常对应两个buffer,一个frontbuffer,一个backbuffer<>其中,backbuffer就是canvas绘图时对应的bitmap(研究android_view_Surface.cpp::lockCanvas)。因此,绘画

3、总是在backbuffcr_E,需要更新时,则将backbuffer和frontbuffer互换。ThewindowistiedtoaSurfaceandtheViewRootaskstheSurfaceforaCanvasthatisthenusedbytheViewstodrawonto.AfterViewdrawitsdatatocanvas,ViewRootwillcallsurface.unlockCanvasAndPost(canvas)toschedulesurfaceFlinger::composeSurfaces()

4、whichdotheactuallydisplaytodisplaypanel.SurfaceFlingerhandlestotransfersdrawndataincanvastosurfacefrontbufferorbackbufferExceptforSurfacoVicws,diffcrcntviewswithinthesameViewRootsharethesamesurface.Layer的概念:每个surface又对应一个layer,SurfaceFlinger负责将各个layer的frontbuffer合成(comp

5、osite)绘制到屏幕上。ALayerissomethingthatcanbecompositedbySurfaceFlinger(shouldhavebeencalledLayerFlinger).ThereareseveraltypesofLayersifyoulookinthecode,inparticulartheregularones(Layer,cpp),theyarebackedbyaSurface,andtheLayerBuffer(verybadlychosenname)whichdon'thaveabackings

6、tore,butreceiveonefromtheirclient..NotethattheGGLSurfacetype,shouldhavebeencalledGGLBufferMultiplelayersarejustcompositedtothefinalbufferintheirZorder.有几个对象与Surface概念紧密和关:1.JavaSurface(framcworks/base/corc/java/android/vicw/Surfacc.java)。该对•象被应用间接调用(通过SurfaceView,ViewRo

7、ot等),应用需要创建surface,(并同时创建canvas),将图形绘制到这个対象上并最终投递到屏幕上。2.C++Surface(frameworks/base/1ibs/ui/Surface.cppo这个对象被JavaSurface通过Jni调用,实现JavaSurface的功能3.ISurfacc(以及其派生类BnSurfacc)<>这个对象是应用和server间的接CihSurface创建这个ISurface(BnSurface)并发送命令,如更新surface内容到屏幕上。Server端接受这个命令并执行相应操作。研究一个

8、surface如何创建的关键路径如下:1.framcworks/basc/corc/java/android/vicw/Surfacc.javaSurface::Surface()2.frameworks/base/co

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。