在 Android 自定义View 里面,介绍了自定义的View的基本概念。

在 Android 控件架构及View、ViewGroup的测量 里面介绍了 Android 的坐标系 View、ViewGroup的测量方面的内容。

本文我们重点整理一下自定义View绘制的相关技术。

重点:

1. 掌握重写绘制方法,主要涉及到的方法是 onDraw()。 -- 本文说明

2. 掌握Canvas 的使用,主要是掌握Canvas的绘制类方法:drawXXX() 涉及的关键绘制对象 Paint。-- 本文说明

难点:

1. 了解和学会Canvas的辅助类的使用,主要是范围裁切和几何变换。-- 参考后面的推荐博客

2. 了解和学会使用不同的绘制方法来控制遮盖关系。 -- 参考后面的推荐博客

自定义绘制步骤:

1. 提前创建好 Paint 对象,重写 onDraw(),把绘制代码写在 onDraw() 里面,就是自定义绘制最基本的实现。

Paint paint = new Paint();

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas); // 不能缺失
// 绘制一个圆
canvas.drawCircle(300, 300, 200, paint);
}

2. 创建Paint,其中几个最常用的方法:

Paint.setStyle(Style style) // 设置绘制模式

Paint.setColor(int color) // 设置颜色

Paint.setStrokeWidth(float width) // 设置线条宽度

Paint.setTextSize(float textSize) // 设置文字大小

Paint.setAntiAlias(boolean aa) // 设置抗锯齿开关

3. 执行 Canvas 下的相关 draw- 打头的方法,例如 drawCircle()、drawBitmap()

drawColor(@ColorInt int color)  // 颜色填充 -- 在整个绘制区域统一涂上指定的颜色。

drawCircle(float centerX, float centerY, float radius, Paint paint) // 画圆 -- 可以通过修改Paint的参数来画不同类型的圆形。

drawRect(float left, float top, float right, float bottom, Paint paint) // 画矩形

drawPoint(float x, float y, Paint paint)  // 画点 -- setStrokeCap() 可以设置点的形状(矩形/圆形)

drawPoints(float[] pts, int offset, int count, Paint paint)  // drawPoints(float[] pts, Paint paint) 画点(多个)

drawOval(float left, float top, float right, float bottom, Paint paint)  // 画椭圆

drawLine(float startX, float startY, float stopX, float stopY, Paint paint) // 画线

drawLines(float[] pts, int offset, int count, Paint paint) / drawLines(float[] pts, Paint paint)  // 画线(多个)

drawRoundRect(float left, float top, float right, float bottom, float rx, float ry, Paint paint)  // 画圆角矩形

drawArc(float left, float top, float right, float bottom, float startAngle, float sweepAngle, boolean useCenter, Paint paint)  //绘制弧形或扇形

drawPath(Path path, Paint paint)  // 画自定义图形

因为时间关系,自定义View绘制就说到这里,基本上所有的图形绘制都是基于这三步的。

如果需要比较高级的特效的,参考朱凯大神的博客,本人就不多在这里赘述了:

视频教程地址: http://www.bilibili.com/video/av12937987/?zw

文章教程地址如下:

http://hencoder.com/ui-1-1/  绘制基础

http://hencoder.com/ui-1-2/  Paint 详解

http://hencoder.com/ui-1-3/  文字的绘制

http://hencoder.com/ui-1-4/  Canvas 对绘制的辅助

Android 自定义 View 绘制的更多相关文章

  1. android自定义View绘制天气温度曲线

    原文:android自定义View绘制天气温度曲线 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012942410/article/detail ...

  2. android自定义View绘制圆形头像与椭圆头像

    要实现这两种效果,需要自定义View,并且有两种实现方式.   第一种: public class BitmapShaders extends View {     private  BitmapSh ...

  3. Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解

    Android绘图机制(二)--自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解 我们要想画好一些炫酷的View,首先我们得知道怎么去画一些基础的图案,比如矩形,圆 ...

  4. Android自定义View 画弧形,文字,并增加动画效果

    一个简单的Android自定义View的demo,画弧形,文字,开启一个多线程更新ui界面,在子线程更新ui是不允许的,但是View提供了方法,让我们来了解下吧. 1.封装一个抽象的View类   B ...

  5. (转)[原] Android 自定义View 密码框 例子

    遵从准则 暴露您view中所有影响可见外观的属性或者行为. 通过XML添加和设置样式 通过元素的属性来控制其外观和行为,支持和重要事件交流的事件监听器 详细步骤见:Android 自定义View步骤 ...

  6. Android 自定义View合集

    自定义控件学习 https://github.com/GcsSloop/AndroidNote/tree/master/CustomView 小良自定义控件合集 https://github.com/ ...

  7. Android 自定义View (五)——实践

    前言: 前面已经介绍了<Android 自定义 view(四)-- onMeasure 方法理解>,那么这次我们就来小实践下吧 任务: 公司现有两个任务需要我完成 (1)监测液化天然气液压 ...

  8. Android 自定义 view(四)—— onMeasure 方法理解

    前言: 前面我们已经学过<Android 自定义 view(三)-- onDraw 方法理解>,那么接下我们还需要继续去理解自定义view里面的onMeasure 方法 推荐文章: htt ...

  9. Android 自定义 view(三)—— onDraw 方法理解

    前言: 上一篇已经介绍了用自己定义的属性怎么简单定义一个view<Android 自定义view(二) -- attr 使用>,那么接下来我们继续深究自定义view,下一步将要去简单理解自 ...

随机推荐

  1. mysql设置存储中文变成问号或者乱码

    技术交流群: 816227112 问题: 解决办法: 修改my.ini  如果是my-default.ini 要重命名成my.ini 要注意顺序,有可能服务启动不起来 [mysqld] charact ...

  2. sftp免密登录

    最近在linux服务器上搭建了一个sftp服务器,在做免密登录时,因为理解的问题,走了些弯路,在此记录一下. 先来说一下服务器端,在服务端的每一个用户的根目录下都有一个.ssh目录,在这个下面放的公私 ...

  3. centos7 安装 redis4.0.8

    1.安装lrzsz yum install lrzsz -y 2.利用rz命令将window中从redis官网下载好的“redis-4.0.8.tar.gz” 拷贝到centos中 redis官网 : ...

  4. Rabbit

    安装配置参考:https://blog.csdn.net/qq_31634461/article/details/79377256 概念学习参考(纯洁的微笑):https://www.cnblogs. ...

  5. 利用WMITool解决Windows10 浏览器主页被hao123劫持问题

    利用Windows10 激活工具KMS10_1025激活系统之后会出现首页 被劫持的问题 解决办法如下 1.下载wmi tool 连接地址 链接: https://pan.baidu.com/s/1g ...

  6. PHP不借助第三个变量交换值

    总结一下: //方法一: $a = "abc"; $b= "def"; $a = $a^$b; $b = $b^$a; $a = $a^$b; //方法二: l ...

  7. 最简单的struts应用

    博客园 1.搭建一个简单的Struts2应用 具体为一下几个步骤: 1.引入Struts 2工程所需运行库文件. 2.创建并配置web.xml文件 3.创建一个Action类 4.创建并配置strut ...

  8. docker私库Harbor部署(转载)

    系统环境 centos7.3docker-ce docker version: 18.03.0docker-compose version: 1.21.0 Install Docker CE 安装依赖 ...

  9. Greenplum 日常维护手册 (汇总、点评、备查)

    1. 数据库启动:gpstart常用可参数: -a : 直接启动,不提示终端用户输入确认-m:只启动master 实例,主要在故障处理时使用2. 数据库停止:gpstop:常用可参数:-a:直接停止, ...

  10. [Java源码解析] -- String类的compareTo(String otherString)方法的源码解析

    String类下的compareTo(String otherString)方法的源码解析 一. 前言 近日研究了一下String类的一些方法, 通过查看源码, 对一些常用的方法也有了更透彻的认识,  ...