在地图活动中,我使用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下它根本不起作用
我做错了什么?
答案 0 :(得分:1)
硬件加速不支持AvoidXfermode。
您可以使用View.isHardwareAccelerated()确定它,并使用View.setLayerType(LAYER_TYPE_ *)进行设置。虽然您可能需要寻找替代方案。
您可以在此处阅读http://developer.android.com/guide/topics/graphics/hardware-accel.html#unsupported