美文网首页
4.4以下机子Paint出现超出常理的异常

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

作者: Magic旭 | 来源:发表于2019-05-28 20:28 被阅读0次

    异常问题

    在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);
    

    相关文章

      网友评论

          本文标题:4.4以下机子Paint出现超出常理的异常

          本文链接:https://www.haomeiwen.com/subject/masjtctx.html