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

Другие вопросы по тегам