• View.OnClickListener
  • MotionEvent
  • События клика, перемещения при касании




    Download 2,59 Mb.
    bet8/12
    Sana16.05.2024
    Hajmi2,59 Mb.
    #236947
    1   ...   4   5   6   7   8   9   10   11   12
    Bog'liq
    Введение в программирование для платформы Android

    События клика, перемещения при касании
    • Первый способ - атрибут onClick
    • Второй способ - метод setOnClickListener()

    Метод setOnClickListener принимает ссылку на объект, реализующий интерфейс View.OnClickListener, в котором объявлен всего лишь один метод
    public abstract void onClick (View v);
    где v — вид (виджет или контейнер), по которому осуществлен клик.
    Button B = (Button) this.findViewById(R.id. идентификатор_кнопки); B.setOnClickListener( new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    … // Код обработки события клика по виджету v
    } });
    Для того, чтобы виджету или контейнеру назначить обработчик события перемещения, необходимо воспользоваться методом, объявленным в android.view.View:
    public void setOnTouchListener (View.OnTouchListener listner);
    Этот метод принимает ссылку на объект, реализующий интерфейс View.OnTouchListener, в котором объявлен один метод- обработчик события:
    public abstract boolean onTouch (View v, MotionEvent event);
    Метод, обрабатывающий событие, принимает следующие параметры:
    ■ View v — виджет, источник события.
    ■ MotionEvent event — объект, содержащий информацию о событии.
    LinearLayout LL = (LinearLayout)this.findViewById(R.id.идентификатор_контейнера); LL.setOnTouchListener( new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { … // Код обработки событий касания } });
    Событие перемещения представляется объектом MotionEvent, в котором предоставляется инструментарий для получения всевозможных данных о событиях. Этот объект так же позволяет получить информацию о множественных касаниях и перемещениях (это когда пользователь использует в касании несколько пальцев одновременно — например делает движение увеличения изображения)
    • public final int getAction() — возвращает числовое значение, идентифицирующее действие пользователя (MotionEvent.ACTION_DOWN — касание, MotionEvent. ACTION_MOVE — перемещение, MotionEvent.ACTION_ UP — отпускание и т. д.).
    • public final float getX() — возвращает X-координату первого указателя (пальца пользователя).
    • public final float getY() — возвращает Y-координату первого указателя
    • public final int getPointerCount() — возвращает количество указателей (пальцев пользователя) участвующих в событии.
    • public final float getX(int pointerIndex) — возвращает X-координату указателя, индекс которого задается в параметре pointerIndex.
    • public final float getY(int pointerIndex) — возвращает Y-координату указателя, индекс которого задается в параметре pointerIndex.
    • public final float getPressure (int pointerIndex) — возвращает силу давления указателя, индекс которого задается в параметре pointerIndex

    Пример.

    //Поля в активности
    //Виджет TextView для вывода информации о клике private TextView tvClickInfo; //Виджет TextView для вывода информации о перемещении private TextView tvMotionInfo; //Счетчик количества кликов private int cntClick;
    //--- Инициализируем поля объекта ---------------- this.tvClickInfo = (TextView) this.findViewById(R.id.tvClickInfo); this.tvMotionInfo = (TextView) this.findViewById(R.id.tvMotionInfo); //-- Находим главный контейнер в макете Активности - LinearLayout LL = (LinearLayout) this.findViewById(R.id.ll1);
    //-- Назначем обработчик события "Прикосновения/ //Перемещения" ------- LL.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { //-- Получение типа события ---------------------- int action = event.getAction(); //-- Получение координат касания ----------------- float x = event.getX(); float y = event.getY(); //-- Формирование строки с информацией о событии -- String S = ""; switch (action) { case MotionEvent.ACTION_DOWN: S += "Нажатие\n"; break; case MotionEvent.ACTION_MOVE: S += "Перемещение\n"; break; case MotionEvent.ACTION_UP: S += "Отпускание\n"; break; } S += "X = " + x + "\nY = " + y; //-- Вывод информации о событии ------------------ MainActivity.this.tvMotionInfo.setText(S); return false; } });
    //-- Назначаем обработчик клика ------------------ LL.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //-- Увеличиваем счетчик количества кликов по Активности - MainActivity.this.cntClick++; //-- Отображаем информацию в виджете tvClickInfo -- MainActivity.this.tvClickInfo.setText( "Количество кликов: " + MainActivity.this.cntClick); } });

    Download 2,59 Mb.
    1   ...   4   5   6   7   8   9   10   11   12




    Download 2,59 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    События клика, перемещения при касании

    Download 2,59 Mb.