0

在地图活动中,我创建了叠加层,在其上Cnavas绘制形状使用Paint

形状由点和线组成

linePaint = new Paint();
    linePaint.setColor(mContext.getResources().getColor(R.color.Line));
    linePaint.setStyle(Paint.Style.STROKE);
    linePaint.setStrokeWidth(strokeWidth);
    linePaint.setXfermode(avoidXfermode);
    linePaint.setFlags(Paint.ANTI_ALIAS_FLAG);

    mPointPaint = new Paint();
    mPointPaint.setColor(pointColor);
    mPointPaint.setFlags(Paint.ANTI_ALIAS_FLAG);

我还定义AvoidXfermode以避免点与线重叠(点必须在“顶部”)

avoidXfermode = new AvoidXfermode(pointColor, 255, Mode.AVOID);

以 32b 格式在资源中定义的颜色

<color name="Point">#FFFF0000</color>
<color name="Line">#FF4169E1</color>

问题是:它在使用 api 10 的设备上运行良好,但在使用 api v14 的 Nexus 下根本无法运行(有任何容差)

我做错了什么?

4

1 回答 1

1

硬件加速不支持 AvoidXfermode。

您可以使用 View.isHardwareAccelerated() 确定并使用 View.setLayerType(LAYER_TYPE_*) 进行设置。尽管您可能需要寻找替代方案。

你可以在这里阅读http://developer.android.com/guide/topics/graphics/hardware-accel.html#unsupported

于 2013-04-04T09:37:47.983 回答