前言
先来闲聊一下写这个题目的原因吧,其实这个知识点对于大神来说其实是很简单的,所以如果大神看到这里的话,其实就可以不用看下去了。至于如果是新手,或者说跟本人一样,对于canvas的操作还有疑惑的朋友,希望你可以从这篇文章中得到你想要的答案,同时可以解决你的问题。
其实这个文章源自于最近项目需要重构,不得不说,作为一个迈过十年时光的项目来说,要进行重构还是比较烦恼的,至于这个烦恼的原因吧,不用多说,大家也应该知道在产品X闲着没事,正在为自己的KPI而担心的时候,总想搞点事情,这也是无可厚非,尤其是一个菜鸟产品X急切需要表现的时候。当然了,话虽这么说,但是能够为这个有十年光景的项目进行一次重构,心里还是有点小激动的,毕竟能够吸收前人的思想,同时自己又可以在项目中大展身手,对自己来说也是好的。
那么我就来说说这个需求吧,因为我们应用是小说阅读器,所以自然阅读页上面肯定是重中之重,而这一块在性能上的要求无疑也是比较高的,如果单纯使用各种View的组合成为一个新的View,明显这样也是可以的,但是这样的性能必然不是很好,因为这里涉及到多层View的嵌套操作,同时对视图的过度渲染也会导致卡慢等的情况出现,所以最好的方式我们最好还是通过在canvas进行操作了。当然这里我给出的只是canvas操作中的一个我遇到问题时的操作,这些问题可能在大牛看来不值一提,但是哪个敢说未来的大牛不会踩一下坑呢?所以我就只能给自己这样的小白归纳一下自己的问题了,当然由于是重构项目,后续肯定还会有各种各样的问题,所以如果有兴趣的朋友可以关注我的博客,后续我会将我重构中的问题一一收集。
正文
首先我们先来看看canvas的一些基本的常用的操作
操作类型 | 相关API | 备注 |
---|---|---|
绘制颜色 | drawColor drawRGB drawARGB |
使用单一颜色填充canvas |
绘制基本形状 | drawPoint drawPoints drawLine drawLines drawRect drawRoundRect drawOval,drawCircle,drawArc |
依次是点、线、矩形、圆角矩形 椭圆、圆、圆弧 |
绘制图片 | drawBitmap,drawPicture | 绘制位图 |