4.4以下机子Paint出现超出常理的异常

2019-05-28  本文已影响0人  Magic旭

异常问题

在UI界面上,有两个控件,一·类似SpanString类型的绘制控件,二·是canvas.drawPath,绘制背景颜色形状的控件。两个各种生成自身的Paint,进行绘制背景色,字体,边框等等属性。但是在4.4以下的机型,控件一会受到控件二的Paint.Style值的影响,无法正确执行绘制。

排查过程:

1.控件一在绘制的时候也通过mPaint.setStyle(xxxxx)进行设置画笔形状了,然后执行canvas.drawPath(path,mPaint).
2.控件一控件二的hashCode值完全不一样,可以证明在java堆中是两个不同的实例。

问题现象:
正确的现象: image.png 错误的现象: image.png
问题原因

1·paint的style设置了Stroken都没用,一直都是Fill格式。

修复办法

这个问题只有4.4手机下的才会稳定复习,所以关掉硬件加速就好了,具体的还没看。猜想是硬件加速复用了Paint。

//关闭硬件加速
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
上一篇下一篇

猜你喜欢

热点阅读