在地图活动中,我创建了叠加,在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>问题是:它在带有API10的设备上工作得很好,但在带有API10的Nexus下却完全不能工作(有任何容忍度)。
我做错了什么?
发布于 2013-04-04 17:37:48
硬件加速不支持AvoidXfermode。
您可以使用View.isHardwareAccelerated()确定它,并使用View.setLayerType(LAYER_TYPE_*)设置它。尽管您可能需要寻找替代方案。
你可以在这里阅读到http://developer.android.com/guide/topics/graphics/hardware-accel.html#unsupported
https://stackoverflow.com/questions/15565510
复制相似问题