- Полный список
- Создаем кнопку в Android. Пример работы с виджетом Button в Android
- Создаем кнопку в Android
- Как работают кнопки? Что происходит в каждом виджете Button?
- Инициализация кнопки в Android
- Android. Работа с кнопками (Button), событие нажатия на кнопку в мобильном приложении
- Подготовка
- Обработка события нажатия на кнопку в приложении
- 1 способ. Обработка события нажатия с помощью метода setOnClickListener
- 2 способ. Обработка события нажатия с помощью интерфейса OnClickListener
- 3 способ. Обработка события нажатия с помощью атрибута onClick
- 3 в 1. Все 3 способа в одном примере
- Один обработчик нажатия для нескольких кнопок
- Один обработчик нажатия кнопки для 1-го способа, setOnClickListener
- Один обработчик нажатия кнопки для 2-го способа, интерфейс OnClickListener
- Один обработчик нажатия кнопки для 3-го способа, атрибут onClick
- Обработчик события непосредственно при нажатии на кнопку
- Дополнительно
- Сделать кнопку недоступной
- Получить текст кнопки
Полный список
В этом уроке мы:
— научимся обрабатывать нажатие кнопки и узнаем, что такое обработчик
Project name: P0091_OnClickButtons
Build Target: Android 2.3.3
Application name: OnClickButtons
Package name: ru.startandroid.develop.onclickbuttons
Create Activity: MainActivity
В layout-файл main.xml напишем следующее и сохраним:
У нас есть TextView с текстом и две кнопки: OK и Cancel. Мы сделаем так, чтобы по нажатию кнопки менялось содержимое TextView. По нажатию кнопки OK – будем выводить текст: «Нажата кнопка ОК», по нажатию Cancel – «Нажата кнопка Cancel».
Открываем MainActivity.java. Описание объектов вынесем за пределы метода onCreate. Это сделано для того, чтобы мы могли из любого метода обращаться к ним. В onCreate мы эти объекты заполним с помощью уже пройденного нами метода findViewById. В итоге должен получиться такой код:
Обновляем секцию import (CTRL+SHIFT+O). Объекты tvOut, btnOk и btnCancel соответствуют View-элементам экрана и мы можем с ними работать. Нам надо научить кнопку реагировать на нажатие. Для этого у кнопки есть метод setOnClickListener (View.OnClickListener l). На вход подается объект с интерфейсом View.OnClickListener. Именно этому объекту кнопка поручит обрабатывать нажатия. Давайте создадим такой объект. Код продолжаем писать в onCreate:
Eclipse подчеркивает OnClickListener красной линией
т.к. пока не знает его. Необходимо обновить секцию import. Жмем CTRL+SHIFT+O, Eclipse показывает нам, что он знает два интерфейса с именем onClickListener и предлагает выбрать. Нам нужен View.OnClickListener, т.к. метод кнопки setOnClickListener принимает на вход именно его.
Итак, мы создали объект oclBtnOk, который реализует интерфейс View.OnClickListener. Объект содержит метод onClick – это как раз то, что нам нужно. Именно этот метод будет вызван при нажатии кнопки. Мы решили, что по нажатию будем выводить текст: «Нажата кнопка ОК» в TextView (tvOut). Реализуем это.
В методе onClick пишем:
Обработчик нажатия готов. Осталось «скормить» его кнопке с помощью метода setOnClickListener.
В итоге должен получится такой код:
Все сохраняем и запускаем. Жмем на кнопку ОК и видим. Что текст изменился
Нажатие на Cancel пока ни к чему не приводит, т.к. для нее мы обработчик не создали и не присвоили. Давайте сделаем это аналогично, как для кнопки OK. Сначала мы создаем обработчик:
Потом присваиваем его кнопке:
Сохраняем, запускаем, проверяем. Обе кнопки теперь умеют обрабатывать нажатия.
Давайте еще раз проговорим механизм обработки событий на примере нажатия кнопки. Сама кнопка обрабатывать нажатия не умеет, ей нужен обработчик (его также называют слушателем — listener), который присваивается с помощью метода setOnClickListener. Когда на кнопку нажимают, обработчик реагирует и выполняет код из метода onClick. Это можно изобразить так:
Соответственно для реализации необходимо выполнить следующие шаги:
— создаем обработчик
— заполняем метод onClick
— присваиваем обработчик кнопке
и система обработки событий готова.
На следующем уроке:
— научимся использовать один обработчик для нескольких View-элементов
— научим Activity выступать в качестве обработчика
Присоединяйтесь к нам в Telegram:
— в канале StartAndroid публикуются ссылки на новые статьи с сайта startandroid.ru и интересные материалы с хабра, medium.com и т.п.
— в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Kotlin, RxJava, Dagger, Тестирование
— ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня
— новый чат Performance для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме
Источник
Создаем кнопку в Android. Пример работы с виджетом Button в Android
В этой статье мы научимся использовать виджет Button в Android. Также здесь рассказывается о том, как обрабатывать нажатия, применять стили, работать с xml-макетом кнопки, а также управлять виджетом Button в коде. Урок будет полезен для начинающих андроид-программистов.
Сегодня мы узнаем как задавать различные расположение для кнопок, менять фоновые изображения и обрабатывать события, связанные с виджетом Button .
Создаем кнопку в Android
Кнопка представляет собой кликабельный Android виджет, который может принимать различные формы и реагировать на действия пользователя, а именно: обычное нажатие, длительное нажатие и т.д. Виджет Button доступен в пакете android.widget.Button .
Как и любой другой виджет, вы можете объявить Button в макете вашей активности или фрагмента, также создать кнопку программно.
Давайте создадим первые кнопки и зададим различные свойства каждой:
Как работают кнопки? Что происходит в каждом виджете Button?
Android отрендерит приведенный выше XML-код макета следующим образом:
- Android увидит тип макета LinearLayout установит его в вертикальное положение.
- Параметр layout_width укажет ширину макета, а layout_height — высоту. Если в каком-то из значений будет match_parent , то кнопка растянется на весь экран; wrap_content укажет, что размеры кнопки должны быть достаточными, чтобы вместить вложенный контент (текст, картинка).
- android:layout_gravity определит позиционирование виджета Button относительно родительского компонента.
- android:gravity определит выравнивание содержимого Button . Она задается одной из констант left, right, center_vertical, center_horizontal, center .
Как выглядит макет после рендеринга (прорисовки макета после анализа):
Инициализация кнопки в Android
Теперь, когда у нас уже есть готовый макет с четырьмя разными по форме и размеру кнопками, давайте инициализируем их в коде нашей Activity :
Источник
Android. Работа с кнопками (Button), событие нажатия на кнопку в мобильном приложении
Кнопка (Button) — один из самых важных элементов управления приложением. В статье описаны простые примеры работы с кнопками в Android приложении
Подготовка
Создаем проект, выбираем Empty Activity, Activity Name: MainActivity, Layout Name: activity_main. В лайоуте /res/layout/activity_main.xml оставляем вывод текста TextView, добавляем кнопку Button и прописываем для каждого элемента свой id. После нажатия на кнопку будем выводить текст в TextView, который покажет, что событие было обработано.
В итоге /res/layout/activity_main.xml будет выглядеть примерно следующим образом:
TextView и Button — 2 элемента которые нам понадобятся.
Далее в MainActivity (MainActivity.java) добавим описание Button и TextView, для возможности обращения к ним из любого метода класса, инициализируем их в методе onCreate() и заполним с помощью метода findViewById():
Приступаем к обработке события нажатия на кнопку.
Обработка события нажатия на кнопку в приложении
1 способ. Обработка события нажатия с помощью метода setOnClickListener
Метод setOnClickListener() прослушивает событие нажатия на кнопку. В методе onCreate() вводим имя кнопки myButton, ставим точку (.) и вводим setO, далее студия сама предложит варианты, вот что получится:
Внутри скобок набираем new O, далее студия подскажет то что необходимо (OnClickListener), в итоге получим следующее:
Далее с помощью метода setText добавляем изменение текста в TextView:
В итоге обработчик нажатия на кнопку будет выглядеть так:
Сохраняем, запускаем приложение и жмем кнопку.
Полный код MainActivity (MainActivity.java):
Код метода OnClickListener() можно вынести отдельно, например для работы с несколькими кнопками. Создаем обработчик нажатия:
И присваиваем обработчик для кнопки:
В таком случае MainActivity (MainActivity.java) примет вид:
2 способ. Обработка события нажатия с помощью интерфейса OnClickListener
Для реализация данного метода необходимо добавить в класс MainActivity интерфейс OnClickListener, делается это следующим образом — implements View.OnClickListener, после чего объявление класса примет вид:
После добавления интерфейса строка будет подчеркнута красным, все из-за того что у нас еще нет метода onClick() интерфейса OnClickListener, чтобы это исправить жмем Alt + Enter (если при нажатии ничего не происходит, то проверьте текущую раскладку, при кириллической раскладке комбинация может не работать, переведите ввод на латинскую раскладку, например на английский) в любом месте подчеркивания, далее выбираем Implemente Methods в открывшимся окне выбираем onClick и жмем ok. После чего в конец класса MainActivity будет добавлен следующий код:
В этот метод добавляем код, который необходимо выполнить по нажатию на кнопку:
Далее в методе onCreate() назначим обработчик для кнопки, в качестве параметра передаем this, т.е. текущий объект:
Сохраняем, запускаем приложение и жмем кнопку.
Полный код MainActivity (MainActivity.java):
3 способ. Обработка события нажатия с помощью атрибута onClick
В данном способе необходимо добавить атрибут onClick для нужной кнопки, есть несколько способов добавления этого атрибута:
1) Открываем activity_main.xml, во вкладке «Design» жмем на нужную кнопку и в окне «Properties«, ищем свойство onClick и вводим в пустое поле название метода для обработки события нажатия кнопки.
2) Или откройте файл activity_main.xml в режиме «Text» и добавьте в элемент Button атрибут onClick с названием метода обработки нажатия кнопки:
В обоих случаях, код файла activity_main.xml будет выглядеть следующим образом:
Далее открываем класс MainActivity (MainActivity.java) и добавляем код метода clickMyBtn():
Сохраняем, запускаем приложение и жмем кнопку.
Полный код MainActivity (MainActivity.java):
3 в 1. Все 3 способа в одном примере
Далее для закрепления можно реализовать все три способа на одном экране, для этого в main_activity.xml добавим 3 кнопки, по одной кнопке на каждый способ, (полный код main_activity.xml):
И сам класс MainActivity со всеми тремя способами (файл MainActivity.java):
Сохраняем, запускаем, проверяем.
Один обработчик нажатия для нескольких кнопок
Часто необходимо сделать один обработчик нажатия для нескольких кнопок, т.к. функционал может практически не отличаться. Приведем пример для всех 3-х способов.
Один обработчик нажатия кнопки для 1-го способа, setOnClickListener
И так в main_activity.xml имеются 3 кнопки:
Открываем класс MainActivity (MainActivity.java) и в обработчик добавляем разный вывод текста в зависимости от нажатой кнопки с помощью конструкции выборки switch case:
И присваиваем кнопкам обработчик:
Сохраняем, запускаем, пробуем.
Полный код MainActivity (MainActivity.java):
Один обработчик нажатия кнопки для 2-го способа, интерфейс OnClickListener
В данном случае main_activity.xml оставляем как было описано выше (с тремя кнопками) и меняем код класса MainActivity. Добавляем интерфейс, реализацию метода onClick():
И присваиваем кнопкам обработчик:
Сохраняем, запускаем, пробуем.
Полный код класса MainActivity (MainActivity.java):
Один обработчик нажатия кнопки для 3-го способа, атрибут onClick
Для этого способа необходимо открыть activity_main.xml и добавить для всех кнопок атрибут android:onClick=»clickMyBtn», для всех кнопок один метод:
В класс MainActivity добавляем метод для обработки нажатия:
Сохраняем, запускаем, пробуем.
Полный код класса MainActivity будет выглядеть следующим образом (MainActivity.java):
Обработчик события непосредственно при нажатии на кнопку
Все выше описанные методы обработки нажатия на кнопку в приложении будут срабатывать после того как вы уберете палец с кнопки, т.е. на отжатие кнопки. Для того что бы добавить обработчик непосредственно при касании, нажатии, на кнопку необходимо использовать слушатель OnTouchListener(). Попробуем его использовать.
В activity_main.xml добавим одну кнопку и текст:
А в класс MainActivity добавляем setOnTouchListener(), в метод onCreate():
Метод onTouch() содержит параметр MotionEvent, который позволяет настроить обработку в зависимости от касания.
ACTION_DOWN — событие касания по экрану (в данном случае кнопки).
ACTION_UP — соответственно срабатывает когда вы уберете палец с экрана (элемента).
Выведем в TextView информацию при нажатии на кнопку и отжатие:
Сохраняем, запускаем и пробуем.
Полный код класса MainActivity (MainActivity.java):
Дополнительно
Сделать кнопку недоступной
В классе MainActivity в методе onCreate() добавляем следующий код:
Такой код пригодится, если необходимо выключить кнопку при определенных условиях.
Так же можно отключить кнопку в activity_main.xml с помощью атрибута android:enabled=»false»:
Получить текст кнопки
Если у вас есть вопросы или предложения по улучшению кода описанного в статье пишите в комментариях.
Я всегда открыт к конструктивному диалогу
Источник