android自定义view--Paint和Canvas
来源:互联网 发布:淘宝推广收费标准 编辑:程序博客网 时间:2024/06/05 19:40
demo主要简单了解下自定义view在onDraw()对视图进行绘制的一些简单操作
如果英语很6可以直接看官方文档:
Canvas官网地址 Paint官网地址
要绘制图形,首先得调整画笔(Paint),按照自己的需求设置画笔的相关属性,常用的一些设置有:
1、setAntiAlias():设置画笔的锯齿效果 2、setDither():设置防抖动 3、setColor():设置画笔的颜色 4、setARGB():设置画笔的A、R、G、B值 5、setAlpha():设置画笔的Alpha值 6、setStyle():设置画笔的风格(空心或实心)(FILL:填充 FILL_AND_STROKE:填充加描边 STROKE:描边 ) 7、setStrokeWidth():设置空心边框的宽度 8、setTextSize():设置字体的尺寸 9、getColor():获取画笔的颜色
1、绘制矩形:canvas.drawRect(); 2、Path绘制:canvas.drawPath(); 3、绘制文字:canvas.drawText(); 4、绘制直线:canvas.drawLine(); 5、绘制圆形:canvas.drawCircle(); 6、绘制圆弧:canvas.drawArc(); 7、绘制图片:canvas.drawBitmap();
矩形绘制 (三个方法) + 圆角矩形绘制 (一个方法)
/** * 绘制矩形 * * 第一,第二个参数:矩形左上角的XY坐标 * 第三,第四个参数:矩形右下角的XY坐标 * 参数五:绘制时实用的画笔 */ canvas.drawRect( 110, 110, 300, 300, mPaint ); /** * rect和rectF的区别和方法 * 区别:精度不一样。Rect是使用int类型作为数值,RectF是使用float类型作为数值。 * 常用方法: * equals()比较两个矩形的坐标是否一样、 * isEmpty()判断矩形是否为空、 * width()获取矩形的宽、 * height()获取矩形的高、 * centerX()获取矩形水平中心点坐标、 * centerY()获取矩形垂直中心点坐标等等 */ Rect rect = new Rect(310, 310, 500, 500); canvas.drawRect(rect, mPaint); RectF rectF = new RectF(510, 510, 700, 700); canvas.drawRect(rectF, mPaint); /** * 第一个参数:RectF对象 * 第二个参数:x方向的圆角半径 * 第三个参数:y方向的圆角半径 * 第四个参数:画笔 */ canvas.drawRoundRect( new RectF(710, 710, 900, 900), 20, 20, mPaint );
Path绘制非常强大,这里只是简单介绍,在后面实例中也会用到,可以单独搞一篇博客写Path
Path path = new Path(); //将起始轮廓点移至x,y坐标点,默认情况为0,0点 path.moveTo(10,10); //绘制一条直线 path.lineTo(200,10); path.lineTo(200,200); //回到初始点形成封闭的曲线 path.close(); canvas.drawPath(path,mPaint);
想要实用文字绘制必须先要了解文字的基线:
String str = "xjghyzab"; mPaint.setTextAlign(Paint.Align.CENTER); /** * 想要把文字画到Canvas上必须要确定这段文字的范围 * 测量所绘制的最小矩形范围(这个不会考虑基线底线,只会测量当前文字最小矩形) */ Rect rect = new Rect(); mPaint.getTextBounds(str, 0, str.length(), rect); /** * 第一个参数:文本 * 第二个参数:X 默认文字起源坐标,如果设置了paint.setTextAlign(Paint.Align.CENTER)就是文字中心坐标 * 第三个参数:Y 文字基线坐标 */ canvas.drawText(str, getMeasuredWidth() / 2, 300, mPaint);
/** * 绘制直线(两点确定一线) * * 一二参数:起点 * 三四参数:终点 * 最后一个参数:绘制直线所使用的画笔 */ canvas.drawLine( 50, 50, getWidth() - 50, 50, mPaint);
/** * 绘制圆形(圆必须要确定圆心和半径) * * 第一二个参数:圆心的XY坐标 * 第二个参数:圆的半径 * 第三个参数:绘制圆所实用的画笔 */ canvas.drawCircle( 110, 150, 60, mPaint);
这里为了效果画了两个矩形边框,真是效果是没有边框的
RectF rectF = new RectF(100, 0, 600, 500); /** * 第一个参数:指定圆弧的外轮廓矩形区域 * 第二个三个参数:圆弧其实角度,顺时针方向 * 第四个参数:如果为True时,在绘制圆弧时将圆心包括在内(上图为false下图为true) * 第五个参数:绘制圆弧的画笔 */ canvas.drawArc( rectF, 0, 150, false, mPaint ); RectF rectF1 = new RectF(100,500 , 600, 1000); canvas.drawArc( rectF1, 0, 150, true, mPaint );
图片绘制一般使用两个方法:
bitmap = ((BitmapDrawable) mResources.getDrawable(R.drawable.aa)).getBitmap(); /** * Bitmap bitmap:要绘制的对象 * float left:图片左边偏移量 * float top:图片上边偏移量 * Paint paint:绘制使用的画笔 */ canvas.drawBitmap( bitmap, 0, 0, mPaint ); //裁剪左上四分之一 Rect mSrcRect = new Rect(0, 0, bitmap.getWidth()/2, bitmap.getHeight()/2); //显示在第一张图片下面 Rect mDestRect = new Rect(0, bitmap.getHeight()+10, bitmap.getWidth(), bitmap.getHeight()*2+10); /** * Bitmap bitmap:要绘制的对象 * Rect src:对图片进行裁截,若是空null则显示整个图片 * RectF dst:图片在Canvas画布中显示的区域 * Paint paint:绘制使用的画笔 */ canvas.drawBitmap( bitmap, mSrcRect, mDestRect, mPaint );
点击打开链接免费下载源码
阅读全文
0 0
- android自定义view--Paint和Canvas
- 自定义View-Paint和Canvas
- Android自定义View---前奏篇(Paint和Canvas的使用)
- Android自定义View工具:Paint&Canvas(一)
- Android自定义View工具:Paint&Canvas(二)
- Android自定义View,paint+canvas的使用
- 自定义View--Canvas和Paint详解
- Android自定义View(一)(Paint和Canvas的基本使用)
- android 自定义view学习笔记————Paint和Canvas的简单使用
- Android自定义View--从Canvas、Paint、Bitmap谈起
- 【Android】自定义View、画布Canvas与画笔Paint
- Android中自定义View中的Paint,Canvas,RectF,Path
- Android 自定义View(一) Paint、Rect、Canvas介绍
- Android自定义View基础之Canvas、Paint介绍
- 自定义View(二)、Canvas和Paint的用法、BitMap
- 自定义View(二)之Paint和Canvas详解
- 关于自定义View的Paint、Canvas和PorterDuffXfermode的用法
- 安卓自定义view之Canvas和Paint方法
- uber的配置
- SUSE 11 SP3下搭建PXC(Percona XtraDB Cluster)
- 20 个 CSS 高级技巧汇总
- 如何为Kafka集群选择合适的Topics/Partitions数量
- 如何设置jquery的ajax方法为同步
- android自定义view--Paint和Canvas
- 单点登录(三)-----实战-----cas server 源码下载和部署
- Qt利用线程进行数据更新
- PHP基于libevent的webSocket连接实例
- C# 如何实现控制反转(依赖注入)
- STS或eclipse安装SVN插件
- 关于GIS的思考
- bzoj3223 Tyvj 1729 文艺平衡树 (splay)
- Git commit消息中附带jira_id/issue_id