自定义view里面的onDraw方法,在这里我们可以绘制各种图形,onDraw里面有两个API我们需要了解清楚他们的用法:Canvas 和 Paint.

Canvas翻译成中文就是画布的意思,Canvas负责进行绘制各种各样的图形,它有如下的一些绘制图形方法:

  • drawArc 绘制弧

  • drawBitmap 绘制位图

  • drawCircle 绘制圆形

  • drawLine 绘制线

  • drawOval 绘制椭圆

  • drawPath 绘制路径

  • drawPoint 绘制一个点

  • drawPoints 绘制多个点

  • drawRect 绘制矩形

  • drawRoundRect 绘制圆角矩形

  • drawText 绘制字符串

  • drawTextOnPath 沿着路径绘制字符串

更多的绘制方法参考:https://developer.android.com/reference/android/graphics/Canvas.html.

Paint翻译成中文有油漆涂料的意思,Paint主要负责设置绘图的风格,包括画笔的颜色,粗细,填充风格等,它有如下的一些设置方法:

  • setARGB/setColor 设置颜色

  • setAlpha 设置透明度

  • setAntiAlias 设置是否抗锯齿

  • setShader 设置画笔的填充效果

  • setShadowLayer 设置阴影

  • setStyle 设置画笔风格

  • setStrokeWidth 设置空心边框的宽度

  • setTextSize 设置绘制文本时文字的大小

  • setStrokeCap(Paint.Cap.ROUND) 设置为圆角

更多的设置方法参考:https://developer.android.com/reference/android/graphics/Paint.html

绘制圆形:drawCircle(float cx, float cy, float radius, Paint paint)

cx: 圆心的x坐标 
cy: 圆心的y坐标 
radius: 圆的半径 
paint: 绘制风格

@Override
protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   Paint paint=new Paint();
   //去锯齿
   paint.setAntiAlias(true);
   //设置颜色
   paint.setColor(getResources().getColor(android.R.color.holo_blue_light));
   //绘制普通圆
   canvas.drawCircle(200,200,100,paint);
   //设置空心Style
   paint.setStyle(Paint.Style.STROKE);
   //设置空心边框的宽度
   paint.setStrokeWidth(20);
   //绘制空心圆
   canvas.drawCircle(200,500,90,paint);
}

绘制矩形:drawRect(float left, float top, float right, float bottom, Paint paint) / drawRect(RectF rect, Paint paint)

left: 矩形left的x坐标 
top: 矩形top的y坐标 
right: 矩形right的x坐标 
bottom: 矩形bottom的y坐标 
paint: 绘制风格

@Override
protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   Paint paint = new Paint();
   //去锯齿
   paint.setAntiAlias(true);
   //设置颜色
   paint.setColor(getResources().getColor(android.R.color.holo_blue_light));
   //绘制正方形
   canvas.drawRect(100, 100, 300, 300, paint);
   //上面代码等同于
   //RectF rel=new RectF(100,100,300,300);
   //canvas.drawRect(rel, paint);    //设置空心Style
   paint.setStyle(Paint.Style.STROKE);
   //设置空心边框的宽度
   paint.setStrokeWidth(20);
   //绘制空心矩形
   canvas.drawRect(100, 400, 600, 800, paint);
}

绘制圆角矩形:drawRoundRect(float left, float top, float right, float bottom, float rx, float ry, Paint paint) / drawRoundRect(RectF rect, float rx, float ry, Paint paint)

left: 图形left的x坐标 
top: 图形top的y坐标 
right: 图形right的x坐标 
bottom: 图形bottom的y坐标 
rx: x方向的圆角半径 
ry: y方向的圆角半径 
paint > 绘制风格

@Override
protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   Paint paint = new Paint();
   //去锯齿
   paint.setAntiAlias(true);
   //设置颜色
   paint.setColor(getResources().getColor(android.R.color.holo_blue_light));
   //绘制圆角矩形
   canvas.drawRoundRect(100, 100, 300, 300, 30, 30, paint);
   //上面代码等同于
   //RectF rel=new RectF(100,100,300,300);
   //canvas.drawRoundRect(rel,30,30,paint);
   //设置空心Style
   paint.setStyle(Paint.Style.STROKE);
   //设置空心边框的宽度
   paint.setStrokeWidth(20);
   //绘制空心圆角矩形
   canvas.drawRoundRect(100, 400, 600, 800, 30, 30, paint);
}

绘制椭圆:drawOval(float left, float top, float right, float bottom, Paint paint)

left: 图形left的x坐标 
top: 图形top的y坐标 
right: 图形right的x坐标 
bottom: 图形bottom的y坐标 
paint: 绘制风格

@Override
protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   Paint paint = new Paint();
   //去锯齿
   paint.setAntiAlias(true);
   //设置颜色
   paint.setColor(getResources().getColor(android.R.color.holo_orange_dark));
   //绘制椭圆
   canvas.drawOval(100, 100, 500, 300, paint);
   //设置空心Style
   paint.setStyle(Paint.Style.STROKE);
   //设置空心边框的宽度
   paint.setStrokeWidth(20);
   //绘制空心椭圆
   canvas.drawOval(100, 400, 600, 800, paint);
}

绘制弧:drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)

oval: 指定圆弧的外轮廓矩形区域 
startAngle: 圆弧起始角度,单位为度 
sweepAngle: 圆弧扫过的角度,顺时针方向,单位为度 
useCenter: 如果为True时,在绘制圆弧时将圆心包括在内,通常用来绘制扇形 
paint: 绘制风格

@Override
protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   Paint paint = new Paint();
   //去锯齿
   paint.setAntiAlias(true);
   //设置颜色
   paint.setColor(getResources().getColor(android.R.color.holo_orange_dark));
   RectF rel = new RectF(100, 100, 300, 300); 
// 设置为圆角   paint .setStrokeCap(Paint.Cap.ROUND);
     //实心圆弧
   canvas.drawArc(rel, 0, 270, false, paint);
   //实心圆弧 将圆心包含在内
   RectF rel2 = new RectF(100, 400, 300, 600);
   canvas.drawArc(rel2, 0, 270, true, paint);
   //设置空心Style
   paint.setStyle(Paint.Style.STROKE);
   paint.setStrokeWidth(20);
   RectF rel3 = new RectF(100, 700, 300, 900);
   canvas.drawArc(rel3, 0, 270, false, paint);
   RectF rel4 = new RectF(100, 1000, 300, 1200);
   canvas.drawArc(rel4, 0, 270, true, paint);
}

绘制文字:drawText(String text, float x, float y, Paint paint)

text: 文本 
x: 文本origin的x坐标 
y: 文本baseline的y坐标 
paint: 绘制风格

@Override
protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   Paint paint = new Paint();
   //去锯齿
   paint.setAntiAlias(true);
   //设置颜色
   paint.setColor(getResources().getColor(android.R.color.holo_orange_dark));
   paint.setTextSize(100);
   //绘制文本
   canvas.drawText("jEh", 80, 150, paint);
}
 

android Canvas 和 Paint用法的更多相关文章

  1. 转Android Canvas和Paint基本使用

    Android Canvas和Paint基本使用   这篇文章主要介绍下画笔Paint和画布Canvas的基本使用  1.Paint 创建对象Paint mPaint = new Paint(); 常 ...

  2. Android为TV端助力 Canvas 和 Paint用法

    自定义view里面的onDraw方法,在这里我们可以绘制各种图形,onDraw里面有两个API我们需要了解清楚他们的用法:Canvas 和 Paint. Canvas翻译成中文就是画布的意思,Canv ...

  3. Android Canvas和Paint基本使用

    这篇文章主要介绍下画笔Paint和画布Canvas的基本使用  1.Paint 创建对象Paint mPaint = new Paint(); 常用的基本方法有 :                mP ...

  4. Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解

    上篇文章介绍了自定义View的创建流程,从宏观上给出了一个自定义View的创建步骤,本篇是上一篇文章的延续,介绍了自定义View中两个必不可少的工具Canvas和Paint,从细节上更进一步的讲解自定 ...

  5. 【Android】21.2 2D图形图像处理(Canvas和Paint)

    分类:C#.Android.VS2015: 创建日期:2016-03-19 一.Canvas对象简介 画布(Canvas对象)是与System.Drawing或iOS核心图形等传统框架非常类似的另一种 ...

  6. Android使用学习之画图(Canvas,Paint)与手势感应及其应用(乒乓球小游戏)

    作为一个没有学习Android的菜鸟,近期一直在工作之外努力地学习的Android的使用. 这周看了下Android的画图.主要是Canvas,Paint等,感觉须要实践下.下午正好有空,就想整一个乒 ...

  7. Android中使用Canvas和Paint绘制一个安卓机器人

    场景 在Android中画笔使用Paint类,画布使用Canvas类来表示. 绘图的基本步骤 首先编写一个继承自View的自定义View类,然后重写其onDraw方法,最后把自定义的view添加到ac ...

  8. android通过Canvas和Paint截取无锯齿圆形图片

    一个通过Canvas和Paint截取无锯齿圆形图片. /** * 根据原图和变长绘制圆形图片 * * @param source * @param min * @return */ public st ...

  9. Android绘图基础Paint和Canvas介绍-android学习之旅(六十一)

    canvas介绍 Paint类介绍 代码示例 效果图

随机推荐

  1. 面向未来的友好设计:Future Friendly

    一年前翻译了本文的一部分,最近终于翻译完成.虽然此设计思想的提出已经好几年了,但是还是觉得应该在国内推广一下,让大家知道“内容策略”,“移动优先”,“响应式设计”,“原子设计”等设计思想和技术的根源. ...

  2. APP漏洞扫描用地址空间随机化

    APP漏洞扫描用地址空间随机化 前言 我们在前文<APP漏洞扫描器之本地拒绝服务检测详解>了解到阿里聚安全漏洞扫描器有一项静态分析加动态模糊测试的方法来检测的功能,并详细的介绍了它在针对本 ...

  3. MVC5 - ASP.NET Identity登录原理 - Claims-based认证和OWIN

    在Membership系列的最后一篇引入了ASP.NET Identity,看到大家对它还是挺感兴趣的,于是来一篇详解登录原理的文章.本文会涉及到Claims-based(基于声明)的认证,我们会详细 ...

  4. lucene 基础知识点

    部分知识点的梳理,参考<lucene实战>及网络资料 1.基本概念 lucence 可以认为分为两大组件: 1)索引组件 a.内容获取:即将原始的内容材料,可以是数据库.网站(爬虫).文本 ...

  5. 【Knockout.js 学习体验之旅】(3)模板绑定

    本文是[Knockout.js 学习体验之旅]系列文章的第3篇,所有demo均基于目前knockout.js的最新版本(3.4.0).小茄才识有限,文中若有不当之处,还望大家指出. 目录: [Knoc ...

  6. 在 Linux 打造属于自己的 Vim

    Linux 系统中很多东西都是以脚本代码.配置文件的形式存在,使用 Linux 系统时,需经常对这些文件进行编辑.很显然,如果没有文本编辑器,江湖之路寸步难行. 我的选择是 Vim.Vim 是 Lin ...

  7. CSharpGL(29)初步封装Texture和Framebuffer

    +BIT祝威+悄悄在此留下版了个权的信息说: CSharpGL(29)初步封装Texture和Framebuffer +BIT祝威+悄悄在此留下版了个权的信息说: Texture和Framebuffe ...

  8. springmvc注解事例

    注解有简化 ,灵活性增强的功能 1.引入jar包 com.springsource.javax.validation-1.0.0.GA.jarcom.springsource.org.aopallia ...

  9. java单例设计模式

    单例模式的特点: 1.单例类只能有一个对象(实例). 2.单例类必须自己创建自己的唯一实例 . 3.单例类必须给所有其他对象提供这一实例. 设置步骤: 1.将对象的应用成员变量用private来修饰. ...

  10. 解析大型.NET ERP系统 灵活复杂的界面控件Infragistics WinForms

    Infragistics 是.NET平台优秀的控件供应商,囊括了WinForms,ASP.NET,Silverlight,WPF,Windows Phone等所有关于微软.NET技术的界面控件.借助于 ...