Android, SurfaceView 中绘制内容,因为加了 canvas.clipPath 导致之后的绘制内容不显示,有没有人遇到过啊

2017-12-11 14:59:41 +08:00
 lixyz

自定义控件,一个圆形的进度条,圆形内使用两个波浪来显示进度,圆形中央用文字显示。

因为波浪需要一直刷新,所以想着用 SurfaceView 来绘制,绘制线程大致步骤如下:

  1. 绘制背景色
  2. 绘制深色波浪
  3. 绘制浅色波浪
  4. 绘制文字

因为是圆形的,所以需要在绘制波浪前将 Canvas 切割为圆形在绘制,所以出现了以下问题

  1. 该控件在 ViewPager 第二页显示正常
  2. 该控件在一个单独的页面中,显示不正常,表现如下:

2.1 在绘制波浪前,使用 canvas.clipPath 方法切割,那么切割代码之后的内容均不显示(波浪、文字)

2.2 绘制波浪时,使用 path.op 来切割,那么 op 过的路径不显示

2.3 不切割,正常显示

有没有人遇到过这种情况啊,另外 V2EX 好像没办法贴图和贴代码?把代码或者图片贴出来,我想会比我的文字描述正直观一些

2169 次点击
所在节点    问与答
2 条回复
yuriko
2017-12-11 17:36:56 +08:00
贴代码可以用 Gist

问题是没看明白,姑且提一下我前两天踩了一个 clipPath 低版本不支持的坑(有 API 没实现)。
lixyz
2017-12-11 18:05:33 +08:00
@yuriko 代码已添加,麻烦您帮忙看一下,看看能不能找到问题所在。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/413764

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX