Android图形系统说明介绍 |
|
本文标签:Android图形 Android图形系统采用Client/Server架构 。SurfaceFlinger主要由C++代码编写而成,Client端代码分为两部分 。一部分是由Java提供的供应用使用的api,另一部分则是由C++写成的底层实现 。 Android图形系统中一个重要的概念和线索是surface 。View及其子类(如TextView, Button)要画在surface上 。每个surface创建一个Canvas对象 (但属性时常改变),用来管理view在surface上的绘图操作,如画点画线 。每个canvas对象对应一个bitmap,存储画在surface上的内容 。
有几个对象与Surface概念紧密相关: 1. Java Surface (frameworks/base/core/java/android/view/Surface.java) 。该对象被应用间接调用(通过SurfaceView, ViewRoot等), 应用需要创建surface,(并同时创建canvas), 将图形绘制到这个对象上并最终投递到屏幕上 。 2. C++ Surface (frameworks/base/libs/ui/Surface.cpp 。 这个对象被Java Surface通过Jni 调用,实现Java Surface 的功能 。 3. ISurface (以及其派生类BnSurface) 。这个对象是应用和server之间的接口 。C++ Surface创建这个ISurface (BnSurface)并发送命令,如更新surface内容到屏幕上 。Server端接受这个命令并执行相应操作 。 android.graphics, android.view和android.widget功能和其他类似的图形库如Qt/Gtk+差不多,分别提供基本的图形原语(如画点画线,设置图形上下文等) 。事件机制,以及开发图形用户界面的控件等 。canvas 用于开发2D图形, Surface 代表一个可供图形系统绘制的surface 。可在其上绘制Android图形 。 与图形相关的代码主要位于下列目录:
|