如何解决 TextureView 闪动的问题?

2019-02-28 10:49:40 +08:00
 MoHen9

1、我使用 TextureView 绘制心电波形,当 TextureView 被一个 Dialog 遮住时,会导致波形的某几小段出现时有时无的闪动,dialog 取消后也闪动,除非波形被新数据覆盖;举个例子就是:小明手持一个大拖把,不断往前推,后面留下了他的脚印,但由于盖了一层保鲜膜,导致个别脚印时有时无,拿开保鲜膜后依然如此。

2、主要逻辑:通过 lockCanvas(dirty)锁定一块矩形区域,然后 canvas.drawLine(startX, startY, stopX, stopY, paint);

3、尝试解决方式:网上有解决 SurfaceView 闪动的方法,用一个 Canvas + Bitmap 解决这个问题,但是在 TextureView 中没用;我使用了 new Surface(TextureSurface)对象的方法绘制,且加了锁,稍微好了点,但依然存在闪动。

4、为什么用 TextureView:主要是因为有多个用户的波形要绘制,而且要放在 Fragment 中,还要改变 TextureView 的大小,操作比较多,完全是把 TextureView 当做普通 View 操作了,所以没选 SurfaceView。

9155 次点击
所在节点    Android
4 条回复
nicevar
2019-02-28 10:56:57 +08:00
看具体情况,有 demo 比较好查问题,lock 之后清理一下 canvas 试过么,不用 SurfaceView 是对的,SurfaceView 问题太多,兼容老的设备才用
MoHen9
2019-02-28 12:04:52 +08:00
@nicevar 怎么清理? drawColor()?
nicevar
2019-03-01 12:04:38 +08:00
```
Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
canvas.drawPaint ( paint);
```
MoHen9
2019-03-01 12:11:58 +08:00
@nicevar 好,谢谢!我试一下。

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

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

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

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

© 2021 V2EX