Как входные события связаны с представлениями? - PullRequest
2 голосов
/ 16 декабря 2011

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

Ответы [ 2 ]

2 голосов
/ 16 декабря 2011

При касании экрана MotionEvent отправляется в самый верхний вид (представление содержимого действия). Представление содержимого затем выполняет некоторые вычисления для области и определяет, есть ли у него дочерние элементы, которые могут получить MotionEvent, и передает MotionEvent представлению, в которое MotionEvent попадает через onTouchEvent(MotionEvent). Это повторяется в иерархии представления до тех пор, пока представление не вернет true или MotionEvent не вернется к представлению верхнего уровня, в котором он решает либо обработать, либо отбросить его. Обратитесь к:

Посмотреть # onTouchEvent (MotionEvent)

ViewGroup # onInterceptTouchEvent (MotionEvent)

0 голосов
/ 16 декабря 2011

Используется шаблон Observer / Listener. Вы реализуете определенный интерфейс, а затем регистрируетесь на платформе Android. Так платформа Android узнает, какой класс и какой метод вызывать.

Поскольку мы используем интерфейс в качестве среды, платформа Android знает, какие методы вызывать. Класс - это то, что вы предоставляете, создавая анонимные внутренние классы или полноценные классы.

Пример:

button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
          // You code
        }
    });

Теперь здесь Android будет вызывать метод интерфейса View.OnClickListener, и вы передаете фактический экземпляр класса в качестве аргумента.

...