Android绘图基础
来源:互联网 发布:网络订的机票怎么取 编辑:程序博客网 时间:2024/06/04 00:27
类似于Swing编程,在Android实现绘图需要集继承View组件,并重写他的onDraw(Canvas canvas)方法。
关于自定义View组件的方式请查看APIhttp://developer.android.com/reference/android/view/View.html 这里详细列出了自定义可以重写的方法以及每个方法的用处。由于我们这里主要谈论的是绘图,所以我们重写onDraw方法即可。
onDraw(Canvas canvas) 中的Canvas API 这个对象代表依附于指定View的画布,它提供了大量的方法绘制图形以及坐标变换。
http://developer.android.com/reference/android/graphics/Canvas.html具体的方法 请查看API
这里还有两个API:Paint,它代表Canvas的画笔,因此Pain类主要用于设置画笔的风格。Path代表任意多条直线连接而成的任意图形,可以用Path来绘制各种形状。
http://developer.android.com/reference/android/graphics/Paint.html
下面示范一下绘制各种基本的图形,通过自定义一个View组件
/*** <p>Title: MyView.java</p>* <p>Description: </p>* <p>Copyright: Copyright (c) 2013</p>* <p>Company: 卓越软件</p>* @author cuihaifeng* @date 2013-11-14* @version 1.0*/package com.example.canvastest;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.LinearGradient;import android.graphics.Paint;import android.graphics.Path;import android.graphics.RectF;import android.graphics.Shader;import android.util.AttributeSet;import android.view.View;/** * <p>Title: MyView</p> * <p>Description: Android 绘图基础</p> * <p>Company: 卓越软件</p> * @author cuihaifeng * @date 2013-11-14 */public class MyView extends View {public MyView(Context context) {super(context);}public MyView(Context context,AttributeSet set){super(context, set);}/* (非 Javadoc)* <p>Title: draw</p>* <p>Description:实现绘图 </p>* @param canvas* @see android.view.View#draw(android.graphics.Canvas)*/@Overridepublic void draw(Canvas canvas) {super.draw(canvas);//将整张画布绘制成白色canvas.drawColor(Color.WHITE);//画笔Paint p = new Paint() ;//去锯齿p.setAntiAlias(true);//设置画笔颜色p.setColor(Color.BLUE);//设置填充风格p.setStyle(Paint.Style.STROKE);//设置画笔的笔触宽度p.setStrokeWidth(3);//绘制圆形canvas.drawCircle(40, 40, 30, p);//绘制正方形canvas.drawRect(10, 80, 70, 140, p);//绘制矩形canvas.drawRect(10, 150, 70, 190, p);RectF rel = new RectF(10, 200, 70, 230);//绘制圆角矩形canvas.drawRoundRect(rel, 5, 5, p);//绘制椭圆canvas.drawOval(new RectF(10, 240, 70, 270), p);//定义一个Path对象,封闭成一个三角形Path path = new Path();path.moveTo(10, 340);path.lineTo(70, 340);path.lineTo(40, 290);path.close();canvas.drawPath(path, p);//定义一个Path对象,封闭成一个五角形Path path1 = new Path();path1.moveTo(100, 240);path1.lineTo(80, 270);// 20,30path1.lineTo(50, 270);// 30,0path1.lineTo(80, 290);//10,20path1.lineTo(70, 320);//10,40path1.lineTo(100, 300);//30,10path1.lineTo(130, 320);path1.lineTo(120, 290);path1.lineTo(150, 270);path1.lineTo(120, 270);path1.close();p.setStyle(Paint.Style.FILL);p.setColor(Color.YELLOW);canvas.drawPath(path1, p);/************渐变**************************///为Paint设置渐变器Shader mShader = new LinearGradient(0, 0, 40, 60, new int[]{Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW}, null, Shader.TileMode.REPEAT);p.setShader(mShader);//设置阴影p.setShadowLayer(45, 10, 10, Color.GRAY);//绘制圆形canvas.drawCircle(200, 40, 30, p);//绘制矩形canvas.drawRect(170, 80,230,140,p);Path path2 = new Path();path2.moveTo(200, 240);path2.lineTo(180, 270);// 20,30path2.lineTo(150, 270);// 30,0path2.lineTo(180, 290);//10,20path2.lineTo(170, 320);//10,40path2.lineTo(200, 300);//30,10path2.lineTo(230, 320);path2.lineTo(220, 290);path2.lineTo(250, 270);path2.lineTo(220, 270);path2.close();canvas.drawPath(path2, p);}}
- Android UI 绘图基础
- Android绘图基础
- Android 绘图基础Canvas
- android基础绘图学习
- Android绘图基础
- Android绘图基础
- Android绘图基础3
- android绘图基础
- Android 绘图基础
- android基础--canvas绘图
- android基础--canvas绘图
- Android绘图之2D绘图基础
- Android绘图基础--简易写字板
- Android 2D绘图基础
- Android —— 绘图基础
- Android自定义View绘图基础
- Android绘图基础Path、PathMeasure
- Android绘图基础之Shader
- Java——抽象类实现接口
- AJAX解析json之 下拉框 二级联动
- github上传资源操作思路
- 1027. Colors in Mars (20)
- 求职的心情
- Android绘图基础
- Android自定义进度条
- 心动C++ 情牵基础算法 I
- python mixin
- ui:没有合适的默认构造函数可用
- OPENSSL SHA256计算
- thinkphp3.1无限级分类模块的设计
- android apk jar so 反编译
- ddd