Android - передача грязного прямоугольника View.invalidate () все еще необходима? - PullRequest
0 голосов
/ 03 января 2019

Я использую Google Maps в Android. Я создал многоугольник точек и использую его как геозону для запуска некоторых действий.

Я хотел бы взять многоугольник точек и преобразовать их в прямоугольник, чтобы я мог вызывать аннулирование только в области прямоугольника. Как мы знаем, экран андроида лишен прямоугольников, и мы можем, когда мы вызываем invalidate () для представления, у нас есть возможность сделать недействительной (перерисовать) только область прямоугольника. это более эффективно, чем перерисовывать весь экран, когда изменилась только его часть. На карте я знаю только это. внутри области геозоны изменились мои представления (там я на самом деле делаю анимацию).

так что я google класс полигонов , и если я назову многоугольник? .Points, у него есть список объектов LatLng. я могу использовать GoogleMap.projection получить соответствующие координаты экрана на телефоне с координатами hps gps в списке polygon.points. Но теперь я хочу позвонить:

postInvalidateOnAnimation и передайте координаты области прямоугольника, которые являются "грязными", чтобы он мог перерисовать его. но затем в документах для недействительного метода я вижу следующее примечание:

Этот метод устарел на уровне API 28. Переход к аппаратному ускорению рендеринга в API 14 уменьшил важность грязного прямоугольника. В API 21 данный прямоугольник полностью игнорируется в пользу вычисляемой внутри области. Из-за этого клиентам рекомендуется просто вызывать invalidate ().

это только для api 28 и выше или от 14 и выше, что проходить грязный прямоугольник бессмысленно? если еще есть точка, как я могу преобразовать точки многоугольника (много точек) в координаты прямоугольника (4 точки)?

...