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 对绘制的辅助
最新文章
- Java基础之反射和动态代理
- Android开发之JavaMail发送邮件(用户反馈)
- 浅谈Oracle中物理结构(数据文件等。。。)与逻辑结构(表空间等。。。。。)
- [No00002F]3步,教你如何分解需求
- 03_Java面向对象特征: 封装性
- Qt开发环境中使用报表控件FastReport遇到的一些问题(一)
- macro names must be identifiers
- sublime3 常用功能总结
- [poj 2978]Colored Stones[状态压缩DP]
- 关于重写ID3 Algorithm Based On MapReduceV1/C++/Streaming的一些心得体会
- GWT开端
- 关于我上传的activiti自定义流程demo的说明
- wpf编写一个简单的PDF转换的程序
- 部署ceph
- mysql-5.7 通过apt或者yum安装方式
- 项目遇到的小问题(关于vue-cli中js点击事件不起作用和iconfont图片下载页面css样式乱的解答)
- 团队服务器搭建(搭建php环境和安装在线mysql管理工具phpmyadmin)
- Vue——服务器上部署vue.js
- 2.DI依赖注入
- xml/map转换器,递归设计思路【纯原】