Android: Жесты и AutoCompleteTextView — Уроки программирования

Обработка жестов

Для создания приложения, обрабатывающего жесты, создадим пустой проект «Hello World». В MainActivity реализуем интерфейсы GestureDetector.OnGestureListener и GestureDetector.OnDoubleTapListener. Используем автоматическую генерацию методов интерфейса через «Implement methods».

Каждый метод интерфейса отвечает за определенное действие:

  • onDown: срабатывает при нажатии на экран.
  • onShowPress: срабатывает при удержании пальца на экране.
  • onSingleTapUp: срабатывает при отпускании пальца после одиночного касания.
  • onDoubleTap: срабатывает при двойном нажатии.
  • onScroll: срабатывает при прокрутке.
  • onFling: срабатывает при быстром движении пальца по экрану.
  • onLongPress: срабатывает при длительном нажатии.

Создадим переменные:

  • TextView text: для отображения информации.
  • GestureDetector gestureDetector: объект для обработки жестов.

Инициализируем gestureDetector:

gestureDetector = new GestureDetector(this, this);

В методе onTouchEvent вызываем gestureDetector.onTouchEvent(event) для обработки события касания. Этот метод передает событие в gestureDetector, который вызывает соответствующие методы обработчика жестов, находящиеся в этом классе.

Для вывода информации при длительном нажатии используем метод onLongPress:

@Override
public void onLongPress(MotionEvent e) {
    text.setText("onLongPress: " + e.toString());
}

Для корректной работы необходимо возвращать true в методе onTouchEvent.

Другие методы обработчика жестов позволяют выполнять различные действия в зависимости от типа жеста. Объект MotionEvent содержит информацию о событии касания, включая координаты (getX(), getY()).

AutoCompleteTextView

AutoCompleteTextView обеспечивает автоматическое заполнение полей на основе введенного текста. Создадим массив строк (например, названий автомобилей) для списка подсказок.

Добавим на layout AutoCompleteTextView:

<AutoCompleteTextView
    android_id="@+id/autoCompleteTextView"
    android_layout_width="match_parent"
    android_layout_height="wrap_content"
    android_layout_margin="16dp"/>

В MainActivity создадим переменные:

  • AutoCompleteTextView autoCompleteTextView: для поля автозаполнения.
  • String[] cars: массив строк с названиями автомобилей.

Инициализируем AutoCompleteTextView и создадим адаптер:

autoCompleteTextView = findViewById(R.id.autoCompleteTextView);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, cars);
autoCompleteTextView.setAdapter(adapter);
autoCompleteTextView.setThreshold(1); // Порог срабатывания автозаполнения (количество введенных символов)

setThreshold определяет количество символов для отображения подсказок. Значение 0 отображает подсказки сразу после фокусировки, 1 — после ввода одного символа и так далее.

В этом уроке рассмотрены основы работы с жестами и AutoCompleteTextView в Android. Эти компоненты позволяют создавать интерактивные и удобные приложения.

Что будем искать? Например,программа