Перехватить обновления экрана в Android - PullRequest
0 голосов
/ 13 февраля 2012

возможно ли перехватывать обновления экрана в андроиде?

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

например. когда у меня есть кнопка в этой группе представлений и я нажимаю на эту кнопку, метод onDraw() не будет вызываться на корневом уровне. С другой стороны, если я коснусь TextView, onDraw() будет вызвано на корневом уровне. Кажется, что некоторые элементы используют метод onDraw() и не передают его родителю. Есть ли другой метод или событие, которое я могу поймать, чтобы получить все обновления корневого представления и его дочерних элементов на корневом уровне, кроме расширения каждого возможного дочернего элемента и создания пользовательских реализаций?

Редактировать: Может быть, я должен немного уточнить это. Моя цель - получать растровые изображения дочерних представлений каждый раз, когда они меняются. Так, например если кнопка является дочерним представлением, я хочу нарисовать представление в растровом изображении (получить кэш чертежа или вызвать draw () вручную на пользовательском холсте). Проблема с использованием, например, onClickListener заключается в том, что состояние кнопки, когда она нажата, на самом деле «нажата», мне также нужно изображение состояния кнопки, которое устанавливается после и до того, как она была нажата (http://developer.android.com/design/style/touch-feedback.html). Еще одна проблема заключается в том, что я не знать, какие и сколько дочерних представлений присутствуют, это должно работать для каждого возможного созданного макета. Так что onClickListeners также не вариант, за исключением того, что я перебрал бы все дочерние элементы и проверил, какой у них тип. Но все же есть проблема с различными состояниями. .

Ответы [ 2 ]

0 голосов
/ 13 февраля 2012

Не создавайте прослушиватели onClick для дочерних макетов, и пусть ваша деятельность реализует onClickListener.Переопределите метод onClick для своей деятельности, и вы сможете обрабатывать любые клики там.

public class Acitivity implements OnClickListener
{

    @Override
    public void onClick(View v) 
    {
          //Handle clicks here
    }

}
0 голосов
/ 13 февраля 2012

не создавать слушателей onclick для дочерних макетов корневого макета.

...