android绘制几何图形的实例代码

本文实例为大家分享了android绘制几何图形展示的具体代码,供大家参考,具体内容如下

效果图:

代码(仅绘制类,不可直接运行):

public class MyView extends View
{
  public MyView(Context context, AttributeSet set)
  {
    super(context, set);
  }
  @Override
  // 重写该方法,进行绘图
  protected void onDraw(Canvas canvas)
  {
    super.onDraw(canvas);
    // 把整张画布绘制成白色
    canvas.drawColor(Color.WHITE);
    Paint paint = new Paint();//创建一个画笔对象
    // 去锯齿
    paint.setAntiAlias(true);
    paint.setColor(Color.BLUE);//设置画笔颜色为蓝色
    paint.setStyle(Paint.Style.STROKE);//设置样式
    paint.setStrokeWidth(3);//设置样式的宽度
    // 绘制圆形
    canvas.drawCircle(40, 40, 30, paint);
    // 绘制正方形
    canvas.drawRect(10, 80, 70, 140, paint);
    // 绘制矩形
    canvas.drawRect(10, 150, 70, 190, paint);
    RectF re1 = new RectF(10, 200, 70, 230);
    // 绘制圆角矩形
    canvas.drawRoundRect(re1, 15, 15, paint);
    RectF re11 = new RectF(10, 240, 70, 270);
    // 绘制椭圆
    canvas.drawOval(re11, paint);
    // 定义一个Path对象,封闭成一个三角形。
    Path path1 = new Path();
    path1.moveTo(10, 340);//将路径点设置到10,340位置
    path1.lineTo(70, 340);//将起始路径点连接都70,340位置
    path1.lineTo(40, 290);//将第二连接点连接到40,290位置
    path1.close();//关闭路径的绘制
    // 根据Path进行绘制,绘制三角形
    canvas.drawPath(path1, paint);
    // 定义一个Path对象,封闭成一个五角形。
    Path path2 = new Path();
    path2.moveTo(26, 360);
    path2.lineTo(54, 360);
    path2.lineTo(70, 392);
    path2.lineTo(40, 420);
    path2.lineTo(10, 392);
    path2.close();
    // 根据Path进行绘制,绘制五角形
    canvas.drawPath(path2, paint);
    // ----------设置填充风格后绘制----------
    paint.setStyle(Paint.Style.FILL);
    paint.setColor(Color.RED);
    canvas.drawCircle(120, 40, 30, paint);
    //绘制正方形
    canvas.drawRect(90, 80, 150, 140, paint);
    //绘制矩形
    canvas.drawRect(90, 150, 150, 190, paint);
    RectF re2 = new RectF(90, 200, 150, 230);
    //绘制圆角矩形
    canvas.drawRoundRect(re2, 15, 15, paint);
    RectF re21 = new RectF(90, 240, 150, 270);
    // 绘制椭圆
    canvas.drawOval(re21, paint);
    Path path3 = new Path();
    path3.moveTo(90, 340);
    path3.lineTo(150, 340);
    path3.lineTo(120, 290);
    path3.close();
    //绘制三角形
    canvas.drawPath(path3, paint);
    Path path4 = new Path();
    path4.moveTo(106, 360);
    path4.lineTo(134, 360);
    path4.lineTo(150, 392);
    path4.lineTo(120, 420);
    path4.lineTo(90, 392);
    path4.close();
    //绘制五角形
    canvas.drawPath(path4, paint);
    // ----------设置渐变器后绘制----------
    // 为Paint设置渐变器
    Shader mShader = new LinearGradient(0, 0, 40, 60
      , new int[] {
      Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW }
      , null , Shader.TileMode.REPEAT);
    paint.setShader(mShader);
    //设置阴影
    paint.setShadowLayer(45 , 10 , 10 , Color.GRAY);
    // 绘制圆形
    canvas.drawCircle(200, 40, 30, paint);
    // 绘制正方形
    canvas.drawRect(170, 80, 230, 140, paint);
    // 绘制矩形
    canvas.drawRect(170, 150, 230, 190, paint);
    RectF re3 = new RectF(170, 200, 230, 230);
    // 绘制圆角矩形
    canvas.drawRoundRect(re3, 15, 15, paint);
    RectF re31 = new RectF(170, 240, 230, 270);
    // 绘制椭圆
    canvas.drawOval(re31, paint);
    Path path5 = new Path();
    path5.moveTo(170, 340);
    path5.lineTo(230, 340);
    path5.lineTo(200, 290);
    path5.close();
    // 根据Path进行绘制,绘制三角形
    canvas.drawPath(path5, paint);
    Path path6 = new Path();
    path6.moveTo(186, 360);
    path6.lineTo(214, 360);
    path6.lineTo(230, 392);
    path6.lineTo(200, 420);
    path6.lineTo(170, 392);
    path6.close();
    // 根据Path进行绘制,绘制五角形
    canvas.drawPath(path6, paint);
    // ----------设置字符大小后绘制----------
    paint.setTextSize(24);
    paint.setShader(null);
    // 绘制7个字符串
    canvas.drawText(getResources().getString(R.string.circle), 240, 50,
      paint);
    canvas.drawText(getResources().getString(R.string.square), 240, 120,
      paint);
    canvas.drawText(getResources().getString(R.string.rect), 240, 175,
      paint);
    canvas.drawText(getResources().getString(R.string.round_rect), 230,
      220, paint);
    canvas.drawText(getResources().getString(R.string.oval), 240,
      260, paint);
    canvas.drawText(getResources().getString(R.string.triangle), 240, 325,
      paint);
    canvas.drawText(getResources().getString(R.string.pentagon), 240, 390,
      paint);
  }
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android学习教程之2D绘图基础及绘制太极图

    前言 Android是通过graphics类来显示2D图形的.其中graphics中包括了Canvas.Paint.Color.Bitmap等类.graphics具有绘制点.线.颜色.2D几何图形.图像处理等功能.其中Color和Bitmap是很常用的类,本文主要要讲的是Canvas和Paint.顾名思义就是画布和画笔. Canvas类 Canvas即画布,我们需要做的就是使用之前设置好的Paint来绘制图形.系统通过 Canvas 为我们提供了一些基础的绘图 API : 1.canvas.dr

  • Android自定义View实现shape图形绘制

    概述 之前曾写过一篇文章介绍了Android中drawable使用Shape资源,通过定义drawable中的shape资源能够绘制简单的图形效果,如矩形,椭圆形,线形和圆环等.后来我在项目中正好遇到这样一个需求,要在特定的位置上显示一条垂直的虚线.正当我胸有成竹的把上面的资源文件放入进去的时候,我才发现它并不能符合我的要求.使用shape画出的垂直虚线,其实就是将一条水平的线,旋转90度.但这样做的弊端就是,该View有效区域为旋转90度后与原来位置相重合的区域,还不能随意的改动,这样的效果根

  • Android中贝塞尔曲线的绘制方法示例代码

    贝塞尔曲线,很多人可能不太了解,什么叫做贝塞尔曲线呢?这里先做一下简单介绍:贝塞尔曲线也可以叫做贝济埃曲线或者贝兹曲线,它由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋.一般的矢量图形软件常利用贝塞尔曲线来精确画出曲线. 上面的介绍中,"线段像可伸缩的皮筋"这句话非常关键,但也特别好理解.至于贝塞尔曲线的详细内容大家可以查阅相关资料.        Android提供的贝塞尔曲线绘制接口 在Android开发中,要实现贝塞尔曲线其实还是很简单的,因为Android已经给我们提

  • Android编程绘制抛物线的方法示例

    本文实例讲述了Android编程绘制抛物线的方法.分享给大家供大家参考,具体如下: package com.yarin.android.Examples_05_04; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Set; import android.content.Context; import

  • Android开发实现绘制淘宝收益图折线效果示例

    本文实例讲述了Android开发实现绘制淘宝收益图折线效果.分享给大家供大家参考,具体如下: 实现的效果我一会贴上,我先说下原理,我们知道要实现在canvas上画线,不就是要搞一个paint嘛,然后首先肯定要设置下paint的属性,那么画文字呢,不就是Textpaint吗,对,就是这么简单,接下来怎么画,折线图主要分为X轴和y轴,x轴表示日期,y表示收益,好,说道这里,大家应该知道怎么去做了,下面直接贴代码 这个方法是,画x,y坐标系的,以及上面的日期和收益了 private void draw

  • Android自定义View实现绘制虚线的方法详解

    前言 说实话当第一次看到这个需求的时候,第一反应就是Canvas只有drawLine方法,并没有drawDashLine方法啊!这咋整啊,难道要我自己做个遍历不断的drawLine?不到1秒,我就放弃这个想法了,因为太恶心了.方法肯定是有的,只不过我不知道而已. 绘制方法 最简单的方法是利用ShapeDrawable,比如说你想用虚线要隔开两个控件,就可以在这两个控件中加个View,然后给它个虚线背景. 嗯,理论上就是这样子的,实现上也很简单. <!-- drawable 文件 --> <

  • Android开发之多线程中实现利用自定义控件绘制小球并完成小球自动下落功能实例

    本文实例讲述了Android开发之多线程中实现利用自定义控件绘制小球并完成小球自动下落功能的方法.分享给大家供大家参考,具体如下: 1.布局界面 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_pare

  • Android Path绘制贝塞尔曲线实现QQ拖拽泡泡

    这两天学习了使用Path绘制贝塞尔曲线相关,然后自己动手做了一个类似QQ未读消息可拖拽的小气泡,效果图如下: 最终效果图 接下来一步一步的实现整个过程. 基本原理 其实就是使用Path绘制三点的二次方贝塞尔曲线来完成那个妖娆的曲线的.然后根据触摸点不断绘制对应的圆形,根据距离的改变改变原始固定圆形的半径大小.最后就是松手后返回或者爆裂的实现. Path介绍: 顾名思义,就是一个路径的意思,Path里面有很多的方法,本次设计主要用到的相关方法有 moveTo() 移动Path到一个指定的点 qua

  • Android编程之canvas绘制各种图形(点,直线,弧,圆,椭圆,文字,矩形,多边形,曲线,圆角矩形)

    本文实例讲述了Android编程之canvas绘制各种图形的方法.分享给大家供大家参考,具体如下: 1.首先说一下canvas类: Class Overview The 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

  • Android 游戏开发中绘制游戏触摸轨迹的曲线图

    本篇文章主要来讲解怎样绘制游戏触摸轨迹的曲线图. 我们在onTouchEvent方法中,可以获取到触摸屏幕时手指触摸点的x.y坐标,如何用这些点形成一条无规则轨迹并把这条无规则轨迹曲线显示在屏幕上就是本篇文章的主旨内容. Android Path类 Android提供了一个Path类 , 顾名思义这个类可以设置曲线路径轨迹.任何无规则的曲线实际上都是由若干条线段组成,而线段的定义为两点之间最短的一条线.path类就 可以记录这两点之间的轨迹,那么若干个Path 就是我们须要绘制的无规则曲线. 下

随机推荐