Как обновить Android Views после внесения изменений?

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

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

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

ИЗМЕНИТЬ

Чтобы добавить в пример, метод, который я вызываю в своем представлении:

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

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

}

person StartingGroovy    schedule 20.07.2011    source источник


Ответы (1)


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

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

person Thomas Dignan    schedule 20.07.2011
comment
если я правильно понял вас, я должен вызвать invalidate() в моем методе setLineThickness? - person StartingGroovy; 20.07.2011
comment
Если вы хотите, чтобы пользователь вашего представления не беспокоился о необходимости вызывать его, тогда да. Я бы поместил его туда (сделайте его последней строкой в ​​методе) - person Thomas Dignan; 20.07.2011
comment
Спасибо, попробую, а там как пойдет - person StartingGroovy; 20.07.2011