Android的2D画图(一)
来源:互联网 发布:淘宝网浏览器官方下载 编辑:程序博客网 时间:2024/05/02 00:20
Android SDK支持基本的2D绘图。这一节比较简单,但是要按照自己的想法实现自己想要的目标图还是有一点困难的,这个要到项目开发实际问题中方能见到它的美妙之处。此处给出一个例子看一下注释就明白了。
package mobile.android.draw;import android.app.Activity;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.graphics.Paint.Style;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;public class Main extends Activity{class MyView extends View{private Paint paint1 = new Paint();private Paint paint2 = new Paint();private Paint paint3 = new Paint();private boolean useCenter = true;private float[] textSizeArray = new float[]{ 15, 18, 21, 24, 27 };@Overridepublic boolean onTouchEvent(MotionEvent event){if (useCenter){useCenter = false;paint1.setColor(Color.RED);paint2.setColor(Color.BLACK);paint3.setColor(Color.GREEN);paint1.setStrokeWidth(6);paint2.setStrokeWidth(4);paint3.setStrokeWidth(2);}else{useCenter = true;paint1.setColor(Color.BLACK);paint2.setColor(Color.RED);paint3.setColor(Color.BLUE);paint1.setStrokeWidth(2);paint2.setStrokeWidth(4);paint3.setStrokeWidth(6);}for (int i = 0; i < textSizeArray.length / 2; i++){float textSize = textSizeArray[i];textSizeArray[i] = textSizeArray[textSizeArray.length - i - 1];textSizeArray[textSizeArray.length - i - 1] = textSize;}invalidate();return super.onTouchEvent(event);}public MyView(Context context){super(context);setBackgroundColor(Color.WHITE);paint1.setColor(Color.BLACK);paint1.setStrokeWidth(2);paint2.setColor(Color.RED);paint2.setStrokeWidth(4);paint3.setColor(Color.BLUE);paint3.setStrokeWidth(6);}//扩展多条直线private void drawLinesExt(Canvas canvas, float[] pts, Paint paint){float[] points = new float[pts.length * 2 - 4];for (int i = 0, j = 0; i < pts.length; i = i + 2){points[j++] = pts[i];points[j++] = pts[i + 1];if (i > 1 && i < pts.length - 2){points[j++] = pts[i];points[j++] = pts[i + 1];}}canvas.drawLines(points, paint);}@Overrideprotected void onDraw(Canvas canvas){//绘制像素点canvas.drawPoint(60, 120, paint3);canvas.drawPoint(70, 130, paint3);canvas.drawPoints(new float[]{ 70, 140, 75, 145, 75, 160 }, paint2);//canvas.drawPoints(new float[] // { 70, 140, 75, 145, 75, 160 }, 1,4,paint2);//绘制直线canvas.drawLine(10, 10, 300, 10, paint1);canvas.drawLine(10, 30, 300, 30, paint2);canvas.drawLine(10, 50, 300, 50, paint3);//绘制正方形drawLinesExt(canvas, new float[]{ 10, 70, 120, 70, 120, 170, 10, 170, 10, 70 }, paint2);drawLinesExt(canvas, new float[]{ 25, 85, 105, 85, 105, 155, 25, 155, 25, 85 }, paint3);//绘制三角形drawLinesExt(canvas, new float[]{ 160, 70, 230, 150, 170, 155, 160, 70 }, paint2);//设置非填充状态paint2.setStyle(Style.STROKE);//画空心圆canvas.drawCircle(260, 110, 40, paint2);//设置填充状态paint2.setStyle(Style.FILL);//画实心圆canvas.drawCircle(260, 110, 30, paint2);RectF rectF = new RectF();rectF.left = 30;rectF.top = 190;rectF.right = 120;rectF.bottom = 280;//画弧canvas.drawArc(rectF, 0, 200, useCenter, paint2);rectF.left = 140;rectF.top = 190;rectF.right = 280;rectF.bottom = 290;paint2.setStyle(Style.STROKE);//画空心椭圆canvas.drawArc(rectF, 0, 360, useCenter, paint2);rectF.left = 160;rectF.top = 190;rectF.right = 260;rectF.bottom = 290;paint3.setStyle(Style.STROKE);//画空心圆canvas.drawArc(rectF, 0, 360, useCenter, paint3);float y = 0;//绘制文本for (int i = 0; i < textSizeArray.length; i++){paint1.setTextSize(textSizeArray[i]);paint1.setColor(Color.BLUE);canvas.drawText("Android(宽度:" + paint1.measureText("Android")+ ")", 20, 315 + y, paint1);y += paint1.getTextSize() + 5;}paint1.setTextSize(22);canvas.drawPosText("圆形", new float[]{180,230, 210,250}, paint1);}}@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);//装载视图setContentView(new MyView(this));}}
上面写了一些注释,一目了然就可以知道怎么做了!!
0 0
- Android的2D画图(一)
- Android apk 里面的2D和3D画图 详解
- Quartz 2D 画图
- Matlab-2D画图
- android画图之Matrix(一)
- android 画图之bitmap(一)
- Android画图之Matrix(一)
- android 画图一
- iOS开发的2D绘制--CoreGraphics的简单使用二(画图形)
- Android画图学习总结(一)——Android Drawable、Bitmap、Canvas和Paint的区别
- QT 2d各种画图
- 2D画图 & CGContextRef 常用的函数和方法
- Android画图之Matrix(一)
- Android画图之Matrix(一)
- Android画图之Matrix(一)
- Android画图之Matrix(一)
- Android画图之Bitmap(一)
- Android画图之Matrix(一)
- 未整理电子书
- 18.报时助手
- VPS和VPN的区别
- 未整理电子书
- 持续更新的要弄懂的题
- Android的2D画图(一)
- 19.2n皇后问题
- 1050 [HAOI2006] 旅行comf 题解
- 复制与粘贴
- C++第三周作业
- 20.Huffuman树
- centos6.4 64位下安装BCM43225无线网卡驱动
- 2014.3.20博客记录
- 简易的计时器实例,可以模拟注册协议倒计时同意