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。
1
nicevar 2019-02-28 10:56:57 +08:00
看具体情况,有 demo 比较好查问题,lock 之后清理一下 canvas 试过么,不用 SurfaceView 是对的,SurfaceView 问题太多,兼容老的设备才用
|
3
nicevar 2019-03-01 12:04:38 +08:00
```
Paint paint = new Paint(); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); canvas.drawPaint ( paint); ``` |