Android 自定义 View 绘制
在 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 绘制的更多相关文章
- android自定义View绘制天气温度曲线
原文:android自定义View绘制天气温度曲线 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012942410/article/detail ...
- android自定义View绘制圆形头像与椭圆头像
要实现这两种效果,需要自定义View,并且有两种实现方式. 第一种: public class BitmapShaders extends View { private BitmapSh ...
- Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解
Android绘图机制(二)--自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解 我们要想画好一些炫酷的View,首先我们得知道怎么去画一些基础的图案,比如矩形,圆 ...
- Android自定义View 画弧形,文字,并增加动画效果
一个简单的Android自定义View的demo,画弧形,文字,开启一个多线程更新ui界面,在子线程更新ui是不允许的,但是View提供了方法,让我们来了解下吧. 1.封装一个抽象的View类 B ...
- (转)[原] Android 自定义View 密码框 例子
遵从准则 暴露您view中所有影响可见外观的属性或者行为. 通过XML添加和设置样式 通过元素的属性来控制其外观和行为,支持和重要事件交流的事件监听器 详细步骤见:Android 自定义View步骤 ...
- Android 自定义View合集
自定义控件学习 https://github.com/GcsSloop/AndroidNote/tree/master/CustomView 小良自定义控件合集 https://github.com/ ...
- Android 自定义View (五)——实践
前言: 前面已经介绍了<Android 自定义 view(四)-- onMeasure 方法理解>,那么这次我们就来小实践下吧 任务: 公司现有两个任务需要我完成 (1)监测液化天然气液压 ...
- Android 自定义 view(四)—— onMeasure 方法理解
前言: 前面我们已经学过<Android 自定义 view(三)-- onDraw 方法理解>,那么接下我们还需要继续去理解自定义view里面的onMeasure 方法 推荐文章: htt ...
- Android 自定义 view(三)—— onDraw 方法理解
前言: 上一篇已经介绍了用自己定义的属性怎么简单定义一个view<Android 自定义view(二) -- attr 使用>,那么接下来我们继续深究自定义view,下一步将要去简单理解自 ...
随机推荐
- go安装依赖包
实例 比如先切换到 $GOPATH 的 src 目录,cd $GOPATH/src,然后按需要下载: git clone --depth 1 https://github.com/golang/too ...
- UNIX 系统下退出 git commit 编辑器
如果是 Emacs 编辑器,输入 Ctrl X + Ctrl S(保存),再输入Ctrl X + Ctrl C(退出) 如果是VIM编辑器,输入 ESC + :wq UNIX 系统默认打开的是 Ema ...
- 关于TCP窗口大小
窗口字段 TCP Window字段用于接收端通知发送端:接收端当前能够接收的字节数(即当前允许发送端发送的字节数).在TCP Header中占有16bit长度,如下所示 0 1 2 3 0 1 2 3 ...
- 转 Java操作PDF之iText详细入门
转 Java操作PDF之iText详细入门 2016年08月08日 11:06:00 阅读数:19490 iText是著名的开放项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成 ...
- CentOS 7 minimal网络配置
centos最小化安装没有ifconfig命令,可以使用 ip addr 查看网络信息,习惯ifconfig的用户,则使用 yum -y install net-tools 即可 ; 如果yum不 ...
- 前端面试之vue相关的面试题
hello,你们的小可爱,皮皮聪又来发表感想了. 首先简单概括下会遇到的问题: 1.vuex作用 ①vuex是一个状态管理的插件,可以解决不同组件之间的数据共享和数据持久化. ②vue中的多个组件之间 ...
- 关于Https
http://blog.csdn.net/wfdtxz/article/details/8678982 https://www.tuicool.com/articles/feYfE3I https:/ ...
- OO第一单元单元总结
总述 三周的时间一晃而过,也到了和表达式说再见的时候了.想起来,现在已经能够优雅地在互测“攻击”别人,然后笑对被别人“攻击”,就觉得OO这三周还是很有意义,也多多少少改变了我.周六已经快习惯早上背着包 ...
- EmWin 接触---基础函数
创建对话框,需求两个基本要素:资源表和对话框过程.对话框可以基于阻塞(使用 GUI_ExecDialogBox())或非阻塞(使用 GUI_CreateDialogBox())方式创建.以下为例: G ...
- C#数据同步中基本步骤和用到的相关函数
C#数据同步中基本步骤和用到的相关函数 数据同步对比步骤: 1.将两数据库中对应的数据表分别生成XML文件 /// <summary> /// 将一个DataTable以xml方式存入指定 ...