Android Canvas не рисовал путь, когда точка пути находилась вне поля зрения

У меня возникла проблема с Android Canvas при рисовании контура. В моем случае у меня есть относительный макет, работающий как представление карты (без использования API Google или чего-то в этом роде). Я должен нарисовать путь к этому представлению.

    canvas.drawPath(polyPath, borderPaint);

Я также должен рисовать другой тип, например круг, многоугольник, используя холст. Каждый раз, когда мы увеличиваем или уменьшаем масштаб, мы пересчитываем точку пути, чтобы она соответствовала уровню масштабирования. При использовании старого API, такого как Android 2.3.3, проблем нет. Но для более новых API, таких как Android 4.x, когда мы увеличиваем масштаб, есть точки, которые имеют положение вне видимого вида (например, -300, -300). Через некоторое время увеличение, видимая область отображает только небольшую часть моего пути. И вдруг весь путь исчезает. Если мы уменьшим масштаб, он появится снова. Это похоже на то, что холст перестает отображать их (другой объект по-прежнему отображается как значок). То же самое касается круга, овала или многоугольника.

Так что я не уверен, есть ли какие-либо изменения в том, как рисовать холст? Есть ли что-то, что мне не хватает в рисовании с использованием холста?


person mameo    schedule 29.10.2013    source источник


Ответы (1)


Добавьте эту строку в инициализацию представления

setLayerType(View.LAYER_TYPE_SOFTWARE, null);

также см. это руководство для API, поддерживаемого на аппаратном уровне.

API Google

Изображение A

Изображение B

person Ali Imran    schedule 29.10.2013
comment
Большое спасибо! Это как раз и есть причина моей проблемы. Я добавил несколько строк кода для проверки версии API перед вызовом этого метода. И теперь все снова работает нормально. - person mameo; 29.10.2013