Как я могу определить, буду ли я рисовать вне экрана при выполнении пользовательского растрового изображения в представлении внутри прокрутки в Android

У меня есть подкласс View и я рисую растровые изображения внутри метода onDraw. Затем этот вид помещается в горизонтальную прокрутку. Иногда растровые изображения не будут видны, поскольку они прокручиваются за пределы экрана. Чтобы улучшить производительность, я хотел бы избежать рисования чего-либо, когда объект не будет виден.

Итак, вопрос в том, как мне определить, что мое растровое изображение будет отображаться за пределами экрана, чтобы я мог просто вернуться без рисования?


person icecream    schedule 20.08.2010    source источник


Ответы (1)


Я решил это:

Rect s = new Rect();
getLocalVisibleRect(s);

// (...)
// Do not draw if outside screen
Rect b = getBounds();
boolean offScreen = b.left > s.right || b.right < s.left || b.top > s.bottom || b.bottom < s.top;
if (!offScreen) {
    // Draw here
}
person icecream    schedule 03.09.2010