Обработка жестов
Для создания приложения, обрабатывающего жесты, создадим пустой проект «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. Эти компоненты позволяют создавать интерактивные и удобные приложения.