AvoidXfermode для API v10 и API v14
В карте деятельности я создал наложение на котором 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, но не работает под Nexus с API V14 (с любым допуском)
Что я делаю не так?
1 ответ
Решение
AvoidXfermode не поддерживается с аппаратным ускорением.
Вы можете определить это с помощью View.isHardwareAccelerated() и установить его с помощью View.setLayerType(LAYER_TYPE_*). Хотя, возможно, вам придется искать альтернативы.
Вы можете прочитать об этом здесь http://developer.android.com/guide/topics/graphics/hardware-accel.html