Как обновить Android Views после внесения изменений? - PullRequest
7 голосов
/ 20 июля 2011

У меня есть некоторые методы в моем представлении, которые изменяют некоторые формы, которые рисуются при вызове.В Java, чтобы убедиться, что компонент обновлен, я бы назвал repaint().Есть ли что-то, что будет гарантировать, что мой взгляд обновляется правильно?

Я где-то читал, что вызов invalidate() в методе onDraw() будет поддерживать актуальность, и поэтому мне не нужно иметь что-то вроде repaint() в моих методах, которые изменяют формы, которые

Это правильно, или я должен еще что-то сделать?

РЕДАКТИРОВАТЬ

Чтобы добавить в пример метод Iзвонок на мой взгляд это:

public void setLineThickness(int thickness) {
    aLineThickness = thickness;

    if(aLineThicness > 1)
        //repaint();      - Okay in Java but not in Android

}

1 Ответ

16 голосов
/ 20 июля 2011

Вызов invalidate () сообщит представлению, которое ему необходимо перерисовать (call onDraw) когда-нибудь в будущем.Поэтому, если вы что-то изменили в своем представлении, например, толщину линии, вызовите invalidate () после этого.Таким образом, вы знаете, что ваш вид в конечном итоге будет обновлен.

Весь ваш код рисования должен быть реализован в onDraw (), а ваши другие методы должны просто изменить состояние вашего представления, которое затем будет использовано для его рисованияпосле вызова invalidate ().

...