绘制2D图形Android应用程序开发•Android提供了功能强大的图形库,用于移动设备应用程序开发•Android提供两种图形库–二维图形库–三维图形库1Android图形基础•二维图形库程序包:android.graphics•掌握图形库的图形类•绘图–创建一个类继承View类(或SurfaceView类)–覆盖onDraw()方法,使用Canvas对象在界面上绘制不同图形,使用invalidate()方法刷新界面。1.1Color类•Android中的颜色用4个字节表示(ARGB)–透明度(Alpha)–红色(Red)–绿色(Green)–蓝色(Blue)•一个字节8位可以表示256个数,即每种颜色有256个可选值•颜色通常表示为一个32为整数1.1Color类•透明度:衡量颜色透明度–最小值为0,表示该像素完全透明–最大值255,表示该像素完全不透明–Alpha值为0,RGB的值将失效–Alpha值在(0,255)表示该像素的颜色半透明1.1Color类•创建color对象–使用Color类的静态常量•Intcolor=Color.BLUE;//solidblue–使用颜色值•color=Color.argb(127,255,0,255);//Translucentpurple–intandroid.graphics.Color.argb(intalpha,intred,intgreen,intblue)–Returnacolor-intfromalpha,red,green,bluecomponents.Thesecomponentvaluesshouldbe[0..255],butthereisnorangecheckperformed,soiftheyareoutofrange,thereturnedcolorisundefined.1.1Color类•在XML文件中引用颜色资源–android:textColor="@color/m"–android:textColor="@android:color/background_light"•在Java文件中引用颜色资源–Color=getResources().getColor(R.color.m);•在XML资源文件中定义颜色•Color类常用属性和方法方法或属性名称方法描述BLACK黑色BLUE蓝色CYAN青色DKGRAT深灰色GRAY灰色GREEN绿色LTGRAY浅灰色MAGENTA紫色RED红色TRANSPARENT透明1.2Paint类•Paint是涂料的意思•Android图形库的重要类之一,位于android.graphics包中•Paint类包含样式、颜色、及绘制图形所需的其他信息•cPaint.setColor(Color.LTGRAY)–使用预定义浅灰色设置颜色1.2Paint类•Paint类常用方法方法名称方法描述Paint()构造方法,使用默认设置setColor(intcolor)设置颜色setStrokeWidth(floatwidth)设置线宽setTextAlign(Paint.Alignalign)设置文字对齐setTextSize(floattextSize)设置文字尺寸setShader(Shadershader)设置渐变setAlpha(inta)设置alpha值reset()复位Paint默认设置1.3Canvas类•画布•位于android.graphics包中•提供一些画各种图形的方法,如:如矩形、椭圆、园等1.3Canvas类•Canvas类常用方法方法名称方法描述drawText(Stringtext,floatx,floaty,Paintpiant)在屏幕上写字drawPoint(floatx,floaty,Paintpiant)画点drawLine(floatstartx,floatstarty,floatstopx,floatstopy,Paintpiant)画线drawCircle(floatcx,floatcy,floatradius,Paintpaint)画圆drawOval(RectFoval,Paintpaint)画椭圆drawRect(RectFrect,Paintpaint)画矩形drawRoundRect(RectFrect,floatrx,floatry,Paintpaint)画圆角矩形clipRect(floatleft,floattop,floatright,floatbottom)剪辑矩形clipRegion(Regionregion)剪辑区域1.3Canvas类•Activity类的对象控制屏幕•Activity类的对象引用View类的对象•View类的对象引用Canvas类的对象•重写View.onDraw()方法,可以在指定的画布上绘图•onDraw()方法的参数将制定用于绘画的画布1.4Path类•Path类包含一组矢量绘图命令•Path一般用来从某点移动到另一个点连线•Path类位于android.graphics包中方法或者属性名称方法描述lineTo(floatx,floaty)从最后点到指定点画线moveTo(floatx,floaty)移动到指定点reset()复位1.4Path类•圆的绘制方向是顺时针–circle=newPath();–Circle.addCircle(150,150,100,Direction.CW);•PathEffect类,可以实现图形特效;1.5Drawable类•Drawable类主要针对位图等纯色的视图元素•Drawable类支持的格式–Bitmap(位图)PNG/JPEG图像–NinePatch(九宫格)一种可扩展的PNG图像,主要用作大小可调整的位图按钮的背景–Shape(形状)基于Path类的矢量绘图命令,一种简化的可缩放矢量图形格式1.5Drawable类–Layers(图层)绘图区的容器–States(状态)一个...