Android图形系统说明介绍

移动开发 Android
本篇文章详细介绍Android图形的种种特性,还有图示的方法进行学习,下图概要介绍了android图形系统的架构以及使用到的主要组件。

Android图形系统采用Client/Server架构。SurfaceFlinger主要由C++代码编写而成,Client端代码分为两部分。一部分是由Java提供的供应用使用的api,另一部分则是由C++写成的底层实现。

Android图形系统中一个重要的概念和线索是surface。View及其子类(如TextView, Button)要画在surface上。每个surface创建一个Canvas对象 (但属性时常改变),用来管理view在surface上的绘图操作,如画点画线。每个canvas对象对应一个bitmap,存储画在surface上的内容。

android

有几个对象与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图形

与图形相关的代码主要位于下列目录:

  1. 1、frameworks/base/graphics/java/android/graphics  
  2. 2、frameworks/base/core/java/android/view  
  3. 3、frameworks/base/core/java/android/widget  
  4. 4、frameworks/base/opengl/  
  5. 5、frameworks/base/libs/ui  
  6. 6、frameworks/base/libs/surfaceflinger  
  7. 7、frameworks/base/core/jni/android/graphics  
  8. 8、frameworks/base/core/jni/android/opengl  
  9. 9、frameworks/base/core/jni/android/android_view_*.cpp  
  10. 10、external/skia 

【编辑推荐】

  1. Android应用程序组建原理深入剖析
  2. Android SMS短信服务相关概念简述
  3. PythonAndroid数据库相关代码解读
  4. PythonAndroid安装卸载程序具体操作方法解析
  5. Android应用程序的四个关键点
责任编辑:chenqingxiang 来源: csdn
相关推荐

2010-03-03 17:50:45

Android图形界面

2010-03-03 13:56:24

2010-03-05 10:38:16

Android移动操作

2010-03-03 14:16:53

Android操作系统

2010-02-05 16:21:02

Android导航

2010-03-04 15:26:13

Android操作系统

2010-03-03 17:29:30

Android程序

2009-05-26 15:22:14

Linux图形备份

2013-01-06 13:06:02

2010-02-04 16:37:40

Android程序

2010-02-06 17:43:51

Android应用

2013-11-14 11:18:47

AndroidAudio

2022-09-01 08:08:35

Android移动操作系统

2010-02-05 17:04:31

Android版本

2010-03-05 14:08:16

Android编程功能

2010-02-07 14:11:46

2010-03-05 14:52:09

Android应用程序

2010-02-01 18:06:48

Python Edit

2010-02-22 16:16:14

Python语法

2010-03-05 13:34:54

点赞
收藏

51CTO技术栈公众号