Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0
大部分2D使用的api都在android.graphics
和android.graphics.drawable
包中。他们提供了图形处理相关的: Canvas、ColorFilter、Point(点)和RetcF(矩形)等,还有一些动画相关的:AnimationDrawable、 BitmapDrawable和TransitionDrawable等。以图形处理来说,我们最常用到的就是在一个View上画一些图片、形状或者自定义的文本内容,这里我们都是使用Canvas来实现的。你可以获取View中的Canvas对象,绘制一些自定义形状,然后调用View. invalidate方法让View重新刷新,然后绘制一个新的形状,这样达到2D动画效果。
Canvas:画布,用来直接在View上绘制诸如矩形,圆形,文字,位图等图形。
它提供了各种API:
填充:
public void drawARGB(int a, int r, int g, int b)
public void drawColor(int color)
public void drawRGB(int r, int g, int b)
public void drawColor(int color, PorterDuff.Mode mode)
因为Canvas内部维持了一个mutable Bitmap,所以,它可以使用这些颜色去填充整个Bitmap。并且在API中提到(restricted to the current clip)受限制于clip的范围
绘制几何图像
canvas.drawArc (扇形)
canvas.drawCircle(圆)
canvas.drawOval(椭圆)
canvas.drawLine(线)
canvas.drawPoint(点)
canvas.drawRect(矩形)
canvas.drawRoundRect(圆角矩形)
canvas.drawVertices(顶点)
cnavas.drawPath(路径)
同时受限于clip和matrix
绘制图片
canvas.drawBitmap (位图)
canvas.drawPicture (图片)
同时受限于clip和matrix
文本
canvas.drawText
上面列举的是Canvas所能绘制的基本内容,在实际使用中,可以使用各种过滤或者过度模式,或者其他手段,来达到绘制各种效果。
过渡模式:
Xfermode,AvoidXfermode,PixelXorXfermode,PorterDuffXfermode
PorterDuff
过滤
1、rgb过滤 ColorFilter ,ColorMatrixFilter,PorterDuffColorFilter,LightingColorFilter,PorterDuffColorFilter
2、alpha过滤 MaskFilter,BlurMaskFilter,EmbossMaskFilter
3、DrawFilter,PaintFlagsDrawFilter
变换
Matrix,Camera,ColorMatrix
颜色
Color
渐变
Shader
BitmapShader,ComposeShader,LinearGradient,RadialGradient,SweepGradient
Canvas的变换
如果只是那些简单的draw…方法,那么canvas的功能就太单调了。Canvas还提供了一系列位置转换的方法:rorate、scale、translate、skew(扭曲)等。
另外还常用的两个方法是:
Paint:画笔,作用于画布上,用来设置我们绘制图案的一些参数,如线条宽度(粗细),颜色等。常用的设置有:
setetAntiAlias: 设置画笔的锯齿效果。
setColor: 设置颜色
setARGB: 设置的ARGB色彩值。
setAlpha: 设置Alpha值
setTextSize: 设置字体尺寸。
setStyle: 设置画笔风格,空心或者实心。
setStrokeWidth: 设置空心的边框宽度。
setShader:设置阴影效果
setTextSkewX:设置文字倾斜度
Color:颜色类,主要是提供画笔的颜色等。可以定义在res/values/colors.xml中,也可以直接用系统提供的颜色值,更可通知Color.parseColor()来设置颜色。常用的系统颜色值如:
Color.BLACK;
Color.WHITE;
Color.BLUE;
Color.RED;
Color.YELLOW……