Android中绘制常见的几何图形的代码清单(精)
android 绘制图形(线段,圆,矩形等)

android 绘制图形(线段,圆,矩形等)1. 创建一个你自己的MyView 让他继承 View类实现onDraw 方法 这是主要的。
Java代码1.packagecom.wljie;2.3.importandroid.content.Context;4.5.importandroid.graphics.Canvas;6.7.importandroid.graphics.Color;8.9.importandroid.graphics.Paint;10.11.importandroid.view.View;12.13.publicclassMyViewextendsView{14.15.publicMyView(Contextcontext){16.17.super(context);18.19.//TODOAuto-generatedconstructorstub20.21.}22.23.@Override24.25.protectedvoidonDraw(Canvascanvas){26.27.super.onDraw(canvas);28.29.canvas.drawColor(Color.WHITE);30.31.Paintpaint=newPaint();//实例化paint类32.33.paint.setAntiAlias(true);//设置去锯齿34.35.paint.setColor(Color.RED);//设置paint的颜色是红色的36.37.paint.setStyle(Paint.Style.STROKE);//设置为空心的38.39.canvas.drawLine(0,0,100,100,paint);//划一条线段40.41.canvas.drawCircle(200,200,50,paint);//划一个空心圆42.43.}44.45.}2. 在activity 实例华这个类Java代码1.packagecom.wljie;2.3.importandroid.app.Activity;4.5.importandroid.graphics.Paint;6.7.importandroid.os.Bundle;8.9.importandroid.widget.Button;10.11.importandroid.widget.LinearLayout;12.13.publicclassMainextendsActivity{14.15./**Calledwhentheactivityisfirstcreated.*/16.17.18.@Override19.20.publicvoidonCreate(BundlesavedInstanceState){21.22.super.onCreate(savedInstanceState);23.24.//setContentView(yout.main);25.26.MyViewmyView=newMyView(this);27.28.setContentView(myView);29.30.}31.32.}图形的绘制在Android 中象图标的制作如:并行图,直方图用的比较多。
Android开发之Path类使用详解,自绘各种各样的图形!

Android开发之Path类使⽤详解,⾃绘各种各样的图形!玩过⾃定义View的⼩伙伴都知道,在View的绘制过程中,有⼀个类叫做Path,Path可以帮助我们实现很多⾃定义形状的View,特别是配合xfermode属性来使⽤的时候。
OK,那我们今天就来看看Path中那⼏个常⽤的API。
1.moveTomoveTo表⽰将绘制点移动到某⼀个坐标处,该⽅法并不会进⾏绘制,主要是⽤来移动画笔。
默认情况下起始坐标位于(0,0)点,我们可以⼿动调整默认位置。
2.lineTolineTo表⽰绘制⼀条直线,参数表⽰⽬标坐标如下:@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);Path path = new Path();path.lineTo(getResources().getDimensionPixelSize(R.dimen.dot1x),getResources().getDimensionPixelSize(R.dimen.dot1x));canvas.drawPath(path, paint);}显⽰效果如下:默认情况下,起始点为(0,0)点,如果我⽤moveTo将起始点坐标移⾄(0,150),代码如下:@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);Path path = new Path();path.moveTo(0,getResources().getDimensionPixelSize(R.dimen.dot1x));path.lineTo(getResources().getDimensionPixelSize(R.dimen.dot1x),getResources().getDimensionPixelSize(R.dimen.dot1x));canvas.drawPath(path, paint);}3.quadToquadTo可以⽤来绘制⼀个带控制点的曲线,说⽩了,其实就是贝塞尔曲线。
常见绘图类型_Android开发案例教程与项目实战(在线实验+在线自测)_[共4页]
![常见绘图类型_Android开发案例教程与项目实战(在线实验+在线自测)_[共4页]](https://img.taocdn.com/s3/m/10f9cd7dd1f34693daef3eeb.png)
Android开发案例教程与项目实战(在线实验+在线自测)250 drawRect():矩形。
drawRoundRect():圆角矩形。
drawArc():圆弧,三点钟方向为0°。
drawCircle():圆形。
通过Path这个类,可以画出三角形、梯形等多边形。
Path类可以预先在View上将N个点连成一条“路径”,然后调用Canvas的drawPath(path,paint)即可沿着路径绘制图形。
常用方法如下。
moveTo():设置地点。
lineTo():连接2点。
close():连接起点和终点。
9.1.2 常见绘图类型常见的绘制几何图形主要有点、直线、矩形、多边形、弧形、圆、文字、位图等。
在Andriod中可以通过Canvas提供的各种方法进行绘制上面的集合图形。
下面分别列出绘制不同类型的几何图形的方法。
1.点的方法drawPoint(float x,float y,Paint paint)方法用于在指定点绘制一个点drawPoints(float [] pts,int offset,int count,Paint paint)方法用于从pts中的第offest个位置起选取count个元素作为多个点的坐标,因此count为偶数,当count为基数时,将忽略最后一个元素。
drawPoints(float [] pts,Paint paint)方法是drawPoints()的重载方法,所有坐标都将参与绘制过程。
2.直线的方法drawLine(float startx,float starty,loatstopx,float stopy,Paint paint)方法用于在点(startx,starty)和点(stopx,stopy)之间绘制一条直线。
drawLines(float [] pts,int offset,int count,Paint paint)方法定义类似于drawPoints()方法。
Android 真正的3D图形(三)

Android 真正的3D图形(三)Cube下面来定义一个正方体(Cube),为简单起见,这个四面体只可以设置宽度,高度,和深度,没有和Plane一样提供Segments支持。
Java代码:1.Java代码1.publicclassCubeextendsMesh{2.publicCube(floatwidth,floatheight,floatdepth){3.width/=2;4.height/=2;5.depth/=2;6.7.floatvertices[]={-width,-height,-depth,//08.width,-height,-depth,//19.width,height,-depth,//210.-width,height,-depth,//311.-width,-height,depth,//412.width,-height,depth,//513.width,height,depth,//614.-width,height,depth,//715.};16.17.shortindices[]={0,4,5,18.0,5,1,19.1,5,6,20.1,6,2,21.2,6,7,22.2,7,3,23.3,7,4,24.3,4,0,25.4,7,6,26.4,6,5,27.3,0,1,28.3,1,2,};29.30.setIndices(indices);31.setVertices(vertices);32.}33.}GroupGroup可以用来管理多个空间几何形体,如果把Mesh比作Android的View ,Group可以看作Android的ViewGroup,Android的View的设计也是采用的“Composite Pattern”。
Group的主要功能是把针对Group的操作(如draw)分发到Group中的每个成员对应的操作(如draw)。
Group定义如下:java代码:Java代码1.publicclassGroupextendsMesh{2.privateVectorchildren=newVector();3.4.@Override5.publicvoiddraw(GL10gl){6.intsize=children.size();7.for(inti=0;i<size;i++)8.children.get(i).draw(gl);9.}10.11./**12.*@paramlocation13.*@paramobject14.*@seejava.util.Vector#add(int,ng.Object)15.*/16.publicvoidadd(intlocation,Meshobject){17.children.add(location,object);18.}19.20./**21.*@paramobject22.*@return23.*@seejava.util.Vector#add(ng.Object)24.*/25.publicbooleanadd(Meshobject){26.returnchildren.add(object);27.}28.29./**30.*31.*@seejava.util.Vector#clear()32.*/33.publicvoidclear(){34.children.clear();35.}36.37./**38.*@paramlocation39.*@return40.*@seejava.util.Vector#get(int)41.*/42.publicMeshget(intlocation){43.returnchildren.get(location);44.}45.46./**47.*@paramlocation48.*@return49.*@seejava.util.Vector#remove(int)50.*/51.publicMeshremove(intlocation){52.returnchildren.remove(location);53.}54.55./**56.*@paramobject57.*@return58.*@seejava.util.Vector#remove(ng.Object)59.*/60.publicbooleanremove(Objectobject){61.returnchildren.remove(object);62.}63.64./**65.*@return66.*@seejava.util.Vector#size()67.*/68.publicintsize(){69.returnchildren.size();70.}71.72.}。
Android中绘制常见的几何图形任务要求(精)

1 / 1
Android 中绘制常见的几何图形任务要求 Android 中绘制常见的几何图形任务要求
范美英
(北京信息职业技术学院)
摘 要:在Android 中可以自定义视图。
本文简要介绍了绘制常见的几何图形(如三角形、圆和矩形)教学案例的任务要求。
关键词: Android ;自定义视图;几何图形
完成如图所示的应用程序,要求:
① 在Android 中使用canvas 的drawXXX 方法绘制常见的几何图形,并将这些图形依次竖直方向排列在界面中。
② 三个几何图形分别定义在三个不同的视图类中,类名分别是Triangle 、Rectangle 和Circle 。
绘制几何图形的运行效果示意图
参考文献(资源)
[1]范美英.Android 移动应用开发案例教程[M].北京:机械工业出版社,2015.。
Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)

Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)标签:图形androidpathfloatclass2012-01-20 20:02 151861人阅读评论(64) 收藏举报分类:android(12)版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+] 1、首先说一下canvas类:Class OverviewThe Canvas class holds the "draw" calls. To draw something, you need 4 basic components: A Bitmap to hold the pixels, a Canvas to host the draw calls (writing into the bitmap), a drawing primitive (e.g. Rect, Path, text, Bitmap), and a paint (to describe the colors and styles for the drawing).这个类相当于一个画布,你可以在里面画很多东西;我们可以把这个Canvas理解成系统提供给我们的一块内存区域(但实际上它只是一套画图的API,真正的内存是下面的Bitmap),而且它还提供了一整套对这个内存区域进行操作的方法,所有的这些操作都是画图API。
也就是说在这种方式下我们已经能一笔一划或者使用Graphic来画我们所需要的东西了,要画什么要显示什么都由我们自己控制。
这种方式根据环境还分为两种:一种就是使用普通View的canvas画图,还有一种就是使用专门的SurfaceView的canvas来画图。
两种的主要是区别就是可以在SurfaceView中定义一个专门的线程来完成画图工作,应用程序不需要等待View的刷图,提高性能。
Andriod 绘制图形 、Canvas、Paint、Color、Typeface、Path、RectF、Point、绘制几何图形

Andriod绘制图形android.graphics包是核心渲染包,它提供了一些初级图形工具,诸如画布、颜色过滤器、画笔等,可以让你直接在屏幕上进行图像处理。
这个包中提供了很多类,下面我们就看一下这个包中主要的几个类。
一、Canvas类android.graphics.CanvasCanvas类好比手机中的画纸,我们可以在Canvas上画图形或者图像。
一般我们用android来绘画的时候,需要四个组成部分:1、位图:包含像素2、Canvas画板:包含绘画内容,写入位图3、初始图形:如Rect、Bitmap、text等4、Paint:用来描述上面初始图形的颜色和类型等Canvas类提供了三个构造方法:Public Canvas();构造一个默认无参的Canvas对象Public Canvas(Bitmap bitmap);根据一个Bitmap构造一个Canvas对象Public Canvas(GL gl);根据一个GL来构造一个对象下面我们来了解一下Canvas类提供的方法:在Canvas类提供的方法中比较多经常用的是以draw开头的方法,draw开头的方法很容易理解就是向画板中画图形,比如可以向Canvas中画位图,给图形填充颜色等。
比如方法:drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)画弧形drawCircle(float cx, float cy, float radius, Paint paint)画圆形Canvas类提供的方法比较多,在此我们不一一赘述,在后面的内容中,我将给大家举几个实际的应用程序例子来演示Canvas类的使用方法。
二、Paint类android.graphics.PaintPaint类包含有用来画几何图形、文本、位图的类型和颜色等信息,如果把Canvas类看作是画板,那我们可以把Paint类看做是画笔,可以根据需要画出不同颜色和样式的图形、文本等内容。
Android开发实现各种图形绘制功能示例

Android开发实现各种图形绘制功能⽰例本⽂实例讲述了Android开发实现各种图形绘制功能。
分享给⼤家供⼤家参考,具体如下:这⾥结合本⼈的开发事例,简单介绍⼀下如何在Android平台下实现各种图形的绘制。
⾸先⾃定义⼀个View类,这个view类⾥⾯需要⼀个Paint对象来控制图形的属性,需要⼀个Path对象来记录图形绘制的路径,需要⼀个Canvas类来执⾏绘图操作,还需要⼀个Bitmap类来盛放绘画的结果。
Paint mPaint = new Paint();mPaint.setAntiAlias(true);mPaint.setColor(0xFFFF0000);mPaint.setStyle(Paint.Style.STROKE);mPaint.setStrokeWidth(12);以上代码初始化了Paint对象,设置了画笔的颜⾊、类型和粗细。
BitmapmForeBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888);CanvasmCanvas = new Canvas(mForeBitmap);PathmPath = new Path();以上代码创建了⼀个Bitmap对象,并将他作为参数传给了Canvas对象,同时初始化Path对象。
想让View响应⽤户的触摸事件,需要实现View类的onTouchEvent函数,代码如下:@Overridepublic boolean onTouchEvent(MotionEvent event) {float x = event.getX();float y = event.getY();switch (event.getAction()) {case MotionEvent.ACTION_DOWN:touch_start(x, y);invalidate();break;case MotionEvent.ACTION_MOVE:touch_move(x, y);invalidate();break;case MotionEvent.ACTION_UP:touch_up();invalidate();break;}return true;}其中touch_start,touch_move和touch_up函数分别处理按下,移动和抬起事件,函数的实现将在后⾯介绍,invalidate函数会调⽤onDraw函数保证绘图效果实时显⽰出来。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android中绘制常见的几何图形的代码清单范美英(北京信息职业技术学院)摘要:Android中可以自定义视图,只需要将视图类继承自View,并重写其onDraw方法即可。
本文详细罗列了Android应用界面中绘制常见的几何图形的代码清单。
关键词: Android;自定义视图;几何图形1 src/MainActivity.java类的代码package com.zyk.geographicviews;import android.app.Activity;import android.os.Bundle;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);}}2 src/Circle.java类的代码package com.zyk.geographicviews;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.Style;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.widget.Toast;public class Circle extends View {public Circle(Context context, AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);//圆//w是屏幕宽度,h是屏幕高度float w=canvas.getWidth();float h=canvas.getHeight()-15;Paint p=new Paint();p.setColor(Color.BLUE);p.setStyle(Style.FILL);canvas.drawCircle( w / 2, h / 2 + 2, h / 2, p);}}3 src/Rectangle.java类的代码package com.zyk.geographicviews;import java.util.jar.Attributes;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.graphics.Paint.Style;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.widget.Toast;public class Rectangle extends View {public Rectangle(Context context, AttributeSet attrs){ super(context, attrs);}public Rectangle(Context context) {super(context);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);//w是屏幕宽度,h是屏幕高度float w=canvas.getWidth();float h=canvas.getHeight()-15;Log.i("Fancy", "矩形:w="+w+"h="+h);//矩形Paint p=new Paint();p.setColor(Color.BLUE);p.setStyle(Style.FILL);canvas.drawRect( w / 2 - w / 6, 0 , w / 2 + w / 6, h , p);}}4 src/Triangle.java类的代码package com.zyk.geographicviews;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.Style;import android.graphics.Path;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.widget.Toast;public class Triangle extends View {public Triangle(Context context) {super(context);}public Triangle(Context context, AttributeSet attrs){super(context, attrs);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);//w是屏幕宽度,h是屏幕高度float w=canvas.getWidth();float h=canvas.getHeight()-15;//三角形Paint p=new Paint();p.setColor(Color.BLUE);p.setStyle(Style.FILL);Path path=new Path();path.moveTo(w/2, 5);path.lineTo(w/2+w/6, h);path.lineTo(w/2-w/6, h);path.close();canvas.drawPath(path, p);}}5 res/layout/activity_main.xml的代码清单<LinearLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><com.zyk.geographicviews.Triangleandroid:id="@+id/triangle1"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1" /><com.zyk.geographicviews.Rectangleandroid:id="@+id/rectangle1"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1" /><com.zyk.geographicviews.Circleandroid:id="@+id/circle1"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1" /></LinearLayout>参考文献(资源)[1]范美英.Android移动应用开发案例教程[M].北京:机械工业出版社,2015.。