
android 绘图
文章平均质量分 95
lidongxiu0714
https://github.com/hpuzzuldx/
展开
-
android绘图之Paint(1)
android Paintandroid中绘制特定图案类似显示中的绘画需要画笔和画纸,为此android提供了Paint和Canvas。Paint和Canvas分别代表画笔和画布。The Paint class holds the style and color information about how to draw geometries, text and bitmaps.Paint...原创 2018-12-19 17:28:26 · 4968 阅读 · 0 评论 -
View的invalidate和postInvalidate
1 作用invalidate和postInvalidate常用于刷新View,都会导致View重绘,重新调用view的onDraw方法。invalidate必须在ui线程使用,postInvalidate可以在子线程中使用。 /** * Invalidate the whole view. If the view is visible, * {@link #onDr...原创 2019-03-27 16:40:26 · 1036 阅读 · 0 评论 -
Android绘图之PathMeasure(16)
1 PathMeasure概述首先思考一个问题,任意绘制一条曲线,或者一个圆弧,或者一个不规则图形,又或者利用Path 同时绘制多条曲线,如何获取某个点的坐标,曲线的方向,对于简单的图形根据已知内容很容易得到坐标,对于类似贝塞尔曲线或者不规则图形想要或者坐标,角度信息很困难,今天就来讲解Path中用于获取上述信息的一个工具类。PathMeasure是一个用来测量Path的工具类,可以从Pat...原创 2019-01-09 16:26:57 · 3760 阅读 · 0 评论 -
Android绘图之ComposeShader,PorterDuff.mode及Xfermode(13)
ComposeShader,PorterDuff.mode及Xfermode1 ComposeShader 简介ComposeShader 组合另外两种shader的效果。ComposeShader构造函数:/** * Create a new compose shader, given shaders A, B, and a combining mode. * When the mo...原创 2018-12-25 19:35:29 · 4205 阅读 · 1 评论 -
Android绘制之BitmapShader(12)
BitmapShader简介讲解Paint.setShader中Shader的第四个实现类BitmapShader,前面三个都是渐变,BitmapShader使用图片当做shader,Paint画出的形状都是取自shader中的Bitmap。BitmapShader利用bitmap构建shader,绘制时利用bitmap进行绘制。构造函数:/** * Call this to create...原创 2018-12-25 14:56:06 · 4328 阅读 · 0 评论 -
Android绘图之RadialGradient 放射渐变(11)
1 RadialGradient 简介LinearGradient 和 SweepGradient,这次讲解RadialGradient;RadialGradient被称为放射渐变,就是从中心向外圆形渐变。两个构造函数,第一个构造函数可以实现两种颜色的渐变,第二个构造函数可以实现多个颜色的渐变。RadialGradient(float centerX, float centerY, fl...原创 2018-12-25 11:34:00 · 9412 阅读 · 0 评论 -
Android绘图之SweepGradient(10)
SweepGradient扫描渐变SweepGradient可以实现扫描渐变渲染,类似雷达扫描图,渐变圆弧,渐变进度条等,构造函数有两个:/** * A Shader that draws a sweep gradient around a center point. * * @param cx The x-coordinate of the center * @param...原创 2018-12-24 19:37:38 · 7651 阅读 · 0 评论 -
Android绘图之LinearGradient线性渐变(9)
linearGradient简介linearGradient线性渐变,会用到Paint的setShader,Shader 被称为着色器,在opengl中这个概念经常被用到,android中的shader主要用来给图像着色,Shader在绘制过程中会返回横向重要的颜色组,Paint设置shader后,绘制时会从shader中获取颜色,也就是需要shader告诉画笔某处的颜色值。Shader 具体...原创 2018-12-24 18:02:25 · 40589 阅读 · 0 评论 -
Android绘图之PathEffect (8)
1 PathEffect 概念Paint的setPathEffect函数用于设置绘制几何时的路径样式(线条的轮廓),PathEffect从名字就可以知道主要作用于Path路径,PathEffect是个基类,要实现具体功能需要利用具体的实现类。PathEffect的实现类包括ComposePathEffect,CornerPathEffect,DashPathEffect,DiscretePath...原创 2018-12-24 15:13:41 · 3653 阅读 · 1 评论 -
Android绘图之Canvas状态保存和恢复(7)
1 Canvas 状态保存和恢复前面讲canvas概念理解时已经讲解了save和savelayer,saveLayerAlpha函数,这里进行canvas状态保存和恢复的详细讲解。Canvas 调用了translate,scale,rotate,skew,concat or clipRect等变换后,后续的操作都是基于变换后的Canvas,都会受到影响,对于后续的操作很不方便。Canvas...原创 2018-12-21 16:57:11 · 7883 阅读 · 0 评论 -
Android绘图之Canvas变换(6)
Canvas 与屏幕前面讲解了Canvas的基本概念,Android绘图之Canvas概念理解(5) ,对Canvas的概念进行了分析,但是没有说明和屏幕的关系,Canvas不等于屏幕,屏幕不会动的,我们也无法对屏幕进行(平移,缩放等)操作,只能对Canvas进行操作,所以对Canvas进行操作,屏幕不动,最终会导致看到的图像不同。下面开始讲解Canvas的变幻操作:包括:translat...原创 2018-12-21 14:51:08 · 4189 阅读 · 0 评论 -
Android绘图之Canvas概念理解(5)
Canvas概述想要理解canvas不容易,官方对Canvas这个类的介绍没有说太多,下面我说说我的理解,当然也是结合网上大神们的文章,下面我们从Canvas这个类的注释和方法的注释上来了解这个类。Canvas 类上的注释第一段注释(Canvas类上):The Canvas class holds the “draw” calls. To draw something, you need...原创 2018-12-21 11:00:35 · 4506 阅读 · 0 评论 -
Android 动态修改渐变 GradientDrawable
1GradientDrawable 简介渐变实现前面的文章 讲解了如何实现渐变类似LinearGradient,SweepGradient是用于Paint的setShader的,可以通过定义xml的shape,内部利用gradient标签,将shape作为view的背景快速实现渐变。但当我们需要动态修改时,就需要用到GradientDrawable,它和xml方式对应,可以快速生成可以作为vi...原创 2018-12-26 17:43:40 · 14557 阅读 · 3 评论 -
Android绘图之贝塞尔曲线简介(15)
1贝塞尔曲线简介贝塞尔曲线被发明用来进行汽车的主体设计(流线型),具体就是通过起始点和终点,以及若干控制点,通过调整控制点形成的曲线就叫做贝塞尔曲线,很多复杂一点的特效都需要贝塞尔曲线来实现,我们用的比较多的是二维和三维贝塞尔曲线。应用:抛物线,水波纹,平滑曲线。具体数学推导公式我也看不懂,只能给大家贴两个网上大神制作的贝塞尔曲线生成过程动画。这里列出的公式后面会用到。二维贝塞尔曲线公式:...原创 2018-12-26 16:09:35 · 4629 阅读 · 0 评论 -
Android绘图之drawText,getTextBounds,measureText,FontMetrics,基线(14)
1如何测量一段文本占用的长度和宽度Paint类提供了测量宽高的方法:getTextBounds(String text, int start, int end, Rect bounds)返回一个包含所有字符,默认从(0,0)开始的最小矩形的矩形框。measureText(String text, int start, int end):返回text的宽度。2问题1 drawText函数...原创 2018-12-26 13:51:51 · 6956 阅读 · 1 评论 -
Android绘图之drawText绘制文本相关(4)
绘制文字相关:Paint 相关设置,Canvas相关设置。1 Paint绘制文字相关:相关函数说明:mPaint.setStrokeWidth(10);//设置画笔宽度mPaint.setColor(Color.BLUE);//设置画笔颜色mPaint.setStyle(Paint.Style.STROKE);//设置画笔样式mPaint.setTextSize();//字体大小...原创 2018-12-20 17:41:12 · 6314 阅读 · 0 评论 -
Android绘图之Path(3)
1 Path 简介前面利用Paint,Canvas已经可以绘制出各式各样的简单图形了,本篇讲解Path意为路径,canvas中有drawPath函数按照路径绘制图形。利用Path可以更方便的添加节点,控制形状,对于复杂的形状简单的通过Canvas的绘制函数进行绘制繁琐且麻烦,使用Path可能会简化操作,一般复杂的图形都是用Path进行绘制。注意: 关于网上流传的开启硬件加速对二维绘图(自定义控...原创 2018-12-20 14:11:45 · 4450 阅读 · 0 评论 -
android绘图之Canvas基础(2)
Canvas 基础Canvas画布,用于绘制出各种形状配合画布的变幻操作可以绘制出很多复杂图形,基本的绘制图形分类。提供的绘制函数:canvas.drawColor();canvas.drawRGB();canvas.drawRect();canvas.drawRoundRect();canvas.drawCircle();canvas.drawPath();canvas.dra...原创 2018-12-20 10:05:37 · 5093 阅读 · 1 评论 -
getHeight,getWidth,getMeasuredHeight,getMeasureWidth
源码分析 /** * Like {@link #getMeasuredHeightAndState()}, but only returns the * raw height component (that is the result is masked by * {@link #MEASURED_SIZE_MASK}). * * @ret...原创 2019-03-28 13:56:52 · 2607 阅读 · 0 评论