文档章节

android绘制图形总结

abcijkxyz
 abcijkxyz
发布于 2016/07/30 17:24
字数 535
阅读 3
收藏 0

需要继承View,并重写onDraw(),当需要更新视图时,调用invalidate()(非UI线程调用postInvalidate())。其中涉及到的类有:Canvas,Paint,Path等。

Canvas是依附于View的画布,定义了各种绘制图形的方法,常用的有:drawBitmap()画位图,drawPath()沿着指定path画任意图形,drawCircle()画圆,drawRect()画矩形,drawRoundRect()画圆角矩形,drawOval()画椭圆,drawText()画文本,drawText()画文本,drawColor()画背景颜色,drawTextOnPath()沿着路径画文本,drawLine()画直线,drawPoint()画点,等等。
Canvas还提供了如下方法对图形进行变换:translate(),rotate(),scale()。
Canvas的drawBitmapMesh()方法用来扭曲图像,这个方法非常强大,如果用的好,可以开发出如”水波荡漾“”红旗飘飘“等效果。
Paint是画笔类,主要用来设置绘制风格,常用的api有:setARGB(),setAlpha(),setTextAlign()设置是否抗锯齿,setColor(),setStyle(),setStrokeWidth(),setTextSize(),setPathEffect()设置绘制路径时的路径效果,setTextAlign()设置文字对齐方式,setShader()设置笔画的填充效果,setShadowLayer()设置阴影,等等。
Path类代表任意多条直线连接成的任意图形,常用api有:moveTo()定义图形的第一个顶点,lineTo()定义图形的多个顶点,close()回到起始点形成封闭线,addRect(),setPathEffect()设置绘制效果。PathEffect类来定义绘制效果,该类有如下子类:
CornerPathEffect:将Path的各个连接线段之间的夹角用一种更平滑的方式连接。
DashPathEffect:将Path的线段虚线化。
DiscretePathEffect:打散Path的线段,使得在原来路径的基础上发生打散效果。
PathDashPathEffect:使用Path图形来填充当前的路径。
ComposePathEffect:组合效果。
SumPathEffect:叠加效果。
Matrix是矩阵工具类,用来控制图形,组件的变换。提供了如下方法:reset(),setSkew(),setScale(),setRotate(),setTranslate()。Canvas类画图形的方法里面就会使用到该类,如:drawBitmap(Bitmap bitmap, Matrix matrix, Paint p)。

Shader类可用来指定图形的渲染效果(通过paint.setShader()),它提供了如下子类:
BitmapShader:位图平铺
LinearGradient:线性渐变
RadialGradient:圆形渐变
SweepGradient:角度渐变
ComposeShader:组合渲染效果

本文转载自:http://blog.csdn.net/wdong_love_cl/article/details/51383688

共有 人打赏支持
abcijkxyz
粉丝 60
博文 6196
码字总数 1876
作品 0
深圳
项目经理
图片和图形之用OpenGL ES显示图形(9)

原文 概要 Android框架提供了大量用于创建有吸引力的功能性图形用户界面的标准工具。但是,如果您想要更多地控制应用程序在屏幕上绘制的内容,或者冒险进入三维图形,则需要使用其他工具。A...

lichong951
05/26
0
0
Android性能优化:那些不可忽略的绘制优化

前言 在 开发中,性能优化策略十分重要 本文主要讲解性能优化中的绘制优化,希望你们会喜欢。 目录 // 方式2:在 BaseActivity 的 onCreate() 方法中使用下面的代码移除 优化方案2:移除 控件...

Carson_Ho
05/21
0
0
图片和图形之矢量绘制(Vector drawables)(3)

原文 概述 A VectorDrawable是一个矢量图形,在XML文件中定义为一组点,线和曲线及其相关的颜色信息。使用矢量绘图的主要优点是图像可伸缩性。它可以在不损失显示质量的情况下进行缩放,这意...

lichong951
05/25
0
0
图片和图形之构建一个OpenGL ES环境(10)

原文 概要 构建一个OpenGL ES环境 为了在Android应用程序中使用OpenGL ES绘制图形,您必须为它们创建一个视图容器。其中一种更直接的方法是实现a GLSurfaceView和a GLSurfaceView.Renderer。...

lichong951
05/26
0
0
Android学习笔记09:Paint及Canvas的简单应用

Android学习笔记09:Paint及Canvas的简单应用   在Android中需要通过graphics类来显示2D图形。   graphics中包括了Canvas(画布)、Paint(画笔)、Color(颜色)、Bitmap(图像)等常用...

Carl_
2015/01/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot2.0 停机

最近新建了个SpringBoot2.0的项目,因为原来一直使用的是传统的Tomcat部署war包的形式,所以这次SpringBoot内置Tomcat部署jar包的时候遇到了很多问题。其中一个就是因为没有外置的Tomcat容器...

Canaan_
昨天
0
0
Confluence 6 外部参考

一个外部参考的意思是任何站点链接到你 Confluence 的实例。任何时候当 Confluence 的用户单击这个外部链接的时候,Confluence 可以记录这次单击为参考。 在默认的情况下,外部链接的参考链接...

honeymose
昨天
0
0
Android中的设计模式之抽象工厂模式

参考 《设计模式解析》 第十一章 Abstract Factory模式 《设计模式:可复用面向对象软件的基础 》3.1 Abstract Factory 抽象工厂 对象创建型模式 《Android源码设计模式解析与实战》第6章 创...

newtrek
昨天
0
0
Redis | 地理空间(GEO)的一个坑

Redis的地理空间(Geo)是个好东西,轻轻松松的就可以把地图描点的问题处理了, 最近却遇到一个坑...Redis采用的Msater-Slave模式, 运用GEORADIUS在salve读取对应的数据,新增了从节点但是从不返...

云迹
昨天
0
0
日期和时间API - 读《Java 8实战》

日期与时间 LocalDate 创建一个LocalDate对象并读取其值 // 根据年月日创建日期LocalDate date1 = LocalDate.of(2014, 3, 18);// 读取System.out.println(date1.getYear()); // 2014Sys...

yysue
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部