Green-sell.info

Новые технологии
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Программирование кнопки андроид

Button (Кнопка)

Общая информация

Кнопка — один из самых распространенных элементов управления в программировании. Наследуется от TextView и является базовым классом для класса СompoundButton. От класса CompoundButton в свою очередь наследуются такие элементы как CheckBox, ToggleButton и RadioButton. В Android для кнопки используется класс android.widget.Button. На кнопке располагается текст и на кнопку нужно нажать, чтобы получить результат. Альтернативой ей может служить компонент ImageButton (android.widget.ImageButton), у которого вместо текста используется изображение.

В студии кнопка представлена компонентом Button в разделе Widgets. Управлять размером шрифта, цветом текста и другими свойствами можно через атрибут textAppearance, который задействует системные стили. Выпадающий список данного свойства содержит огромный перечень вариантов. Также вы можете вручную задать конкретные индивидуальные настройки через отдельные свойства.

Если вы растягиваете кнопку по всей ширине экрана (android:layout_width=»match_parent»), то дополнительно рекомендую использовать атрибут android:layout_margin (или родственные ему layout_marginRight и layout_marginLeft) для создания отступов от краев экрана (веб-мастера знакомы с этими терминами).

Так как кнопка является наследником TextView, то использует многие знакомые атрибуты: textColor, textSize и др.

Три способа обработки событий нажатий на кнопку

Если вы разместили на экране кнопку и будете нажимать на неё, то ничего не произойдёт. Необходимо написать код, который будет выполняться при нажатии. Существует несколько способов обработки нажатий на кнопку.

Первый способ — атрибут onClick

Относительно новый способ, специально разработанный для Android — использовать атрибут onClick (на панели свойств отображается как On Click):

Имя для события можно выбрать произвольное, но лучше не выпендриваться. Далее нужно прописать в классе активности придуманное вами имя метода, который будет обрабатывать нажатие. Метод должен быть открытым (public) и с одним параметром, использующим объект View. Вам нужно выучить пять слов для создания метода, а сам метод поместить в класс (если вы ещё путаетесь в структуре Java-кода, то вставьте метод перед последней фигурной скобкой):

Когда пользователь нажимает на кнопку, то вызывается метод onMyButtonClick(), который в свою очередь генерирует всплывающее сообщение.

Обратите внимание, что при подобном подходе вам не придётся даже объявлять кнопку через конструкцию (Button)findViewById(R.id.button1), так как Android сама поймёт, что к чему. Данный способ применим не только к кнопке, но и к другим элементам и позволяет сократить количество строк кода.

Второй способ — метод setOnClickListener()

Более традиционный способ в Java — через метод setOnClickListener(), который прослушивает нажатия на кнопку. Так как для начинающего программиста код может показаться сложным, то рекомендуется использовать подсказки студии. Вот как это будет выглядеть. Предположим, у вас на экране уже есть кнопка button. В коде вы объявляете её обычным способом:

Следующий шаг — написание метода для нажатия. Напечатайте имя элемента и поставьте точку button. — среда разработки покажет вам список доступных выражений для продолжения кода. Вы можете вручную просмотреть и выбрать нужный вариант, а можно продолжать набирать символы, чтобы ускорить процесс. Так как с нажатиями кнопок вам часто придётся работать, то запомните название его метода (хотя бы первые несколько символов) — набрав четыре символа (seto), вы увидите один оставшийся вариант, дальше можно сразу нажать клавишу Enter, не набирая оставшиеся символы. У вас появится строка такого вида:

Курсор будет находиться внутри скобок и появится подсказка OnClickListener l. Начинайте набирать new OnClickListener. Здесь также не обязательно набирать имя полностью. Набрав слово Oncl, вы увидете нужный вариант и снова нажимайте Enter. В результате вы получите готовую заготовку для обработки нажатия кнопки:

Теперь у вас есть рабочая заготовка и сразу внутри фигурных скобок метода onClick() вы можете писать свой код. Рекомендую потренироваться и набить руку в создании заготовки. Это не так сложно, и с практикой навык закрепится автоматически.

Как вариант, можно вынести код для OnClickListener в отдельное место, это удобно, когда кнопок на экране несколько и такой подход позволит упорядочить код. Удалите предыдущий пример и начните писать код заново. Принцип такой же, немного меняется порядок. В предыдущем примере мы сразу прописали в методе setOnClickListener слушателя new OnClickListener. с методом onClick(). Можно сначала отдельно объявить отдельную переменную myButtonClickListener:

Во время набора активно используйте подсказки через Ctrl+Space. Набрали несколько символов у первого слова и нажимайте эту комбинацию, набрали после слова new несколько символов и снова нажимайте указанную комбинацию — заготовка будет создана за несколько секунд, а вы избежите возможных опечаток.

У нас есть готовая переменная, и теперь, когда вы будете набирать код button.setOnClickListener, то вместо new OnClickListener впишите готовую переменную.

Для новичка описание может показаться сумбурным и не понятным, но лучше самостоятельно проделать эти операции и понять механизм.

Третий способ — интерфейс OnClickListener

Третий способ является родственным второму способу и также является традиционным для Java. Кнопка присваивает себе обработчика с помощью метода setOnClickListener (View.OnClickListener l), т.е. подойдет любой объект с интерфейсом View.OnClickListener. Мы можем указать, что наш класс Activity будет использовать интерфейс View.OnClickListener.

Опять стираем код от предыдущего примера. Далее после слов extends Activity дописываем слова implements OnClickListener. При появлении подсказки не ошибитесь. Обычно первым идёт интерфейс для диалогов, а вторым нужный нам View.OnClickListener.

Название вашего класса будет подчёркнуто волнистой красной чертой, щёлкните слово public и дождитесь появления красной лампочки, выберите вариант Implement methods. Появится диалоговое окно с выделенным методом onClick. Выбираем его и в коде появится заготовка для нажатия кнопки.

Метод будет реализован не в отдельном объекте-обработчике, а в Activity, который и будет выступать обработчиком. В методе onCreate() присвоим обработчик кнопке. Это будет объект this, т.е. текущий объект нашей активности.

На первых порах такой способ также покажется вам сложным и непонятным. Со временем и опытом понимание обязательно придёт.

Лично я рекомендую вам использовать первый способ, как самый простой и понятный. Использование второго и третьего способа дадут вам представление, как писать обработчики для других событий, так как кнопка может иметь и другие события. Например, кроме обычного нажатия существует долгое нажатие на кнопку (long click). Один из таких примеров с методом касания я привёл в конце этой статьи.

О том, как обрабатывать щелчки кнопки я написал отдельную статью Щелчок кнопки/Счетчик ворон. Также кнопки часто будут встречаться во многих примерах на сайте. Про обработку длительный нажатий можно прочитать в статье, посвященной ImageButton.

Плодитесь и размножайтесь — это про кошек, а не про кнопки

Когда у вас одна кнопка в окне, то у вас будет один метод, две кнопки — два метода и так далее. Если у вас несколько кнопок, то не обязательно для каждой прописывать свой метод, можно обойтись и одним, а уже в самом методе разделять код по идентификатору кнопки. Если вы посмотрите на код в предыдущих примерах, то увидите, что в методе присутствует параметр View, который и позволяет определить, для какой кнопки предназначен кусок кода:

Читать еще:  Система программирования состоит из

Предположим, у вас есть три кнопки:

Как видите, мы сократили количество кода. Теперь у нас один обработчик onClick(), в котором прописаны действия для трёх кнопок.

Сделать кнопку недоступной

Иногда нужно сделать кнопку недоступной и активировать её при определённых условиях. Через XML нельзя сделать кнопку недоступной (нет подходящего атрибута). Это можно сделать программно через метод setEnabled():

Как альтернативу можете рассмотреть атрибут android:clickable, который позволит кнопке не реагировать на касания, но при этом вид кнопки останется обычным.

Сделать кнопку плоской

Стандартная кнопка на экране выглядит выпуклой. Но в некоторых случаях желательно использовать плоский интерфейс. Раньше для этих целей можно было использовать TextView с обработкой щелчка. Но теперь рекомендуют использовать специальный стиль borderlessButtonStyle:

Кнопка сохранит своё привычное поведение, будет менять свой цвет при нажатии и т.д.

С появлением Material Design добавились другие стили, например, style=»@style/Widget.AppCompat.Button.Borderless», который является предпочтительным вариантом. Попробуйте также style=»@style/Widget.AppCompat.Button.Borderless.Colored»

Коснись меня нежно

Если вы внимательно понаблюдаете за поведением кнопки, то увидите, что код срабатывает в тот момент, когда вы отпускаете свою лапу, извините, палец с кнопки. Для обычных приложений это вполне нормально, а для игр на скорость такой подход может оказаться слишком медленным. В подобных случаях лучше обрабатывать ситуацию не с нажатием кнопки, а с его касанием. В Android есть соответствующий слушатель OnTouchListener():

У метода onTouch() есть параметр MotionEvent, позволяющий более тонко определять касания экрана. Если произойдет событие, когда пользователь коснулся экрана, то ему будет соответствовать константа ACTION_DOWN. Соответственно, если пользователь уберёт палец, то нужно использовать константу ACTION_UP. Таким образом, можете расценивать щелчок кнопки как комбинацию двух событий — касания и отпускания.

Получить текст с кнопки

Навеяно вопросом с форума. Задача — получить текст кнопки в методе onClick(). У метода есть параметр типа View, у которого нет метода getText(). Для этого нужно привести тип к типу Button.

Если у вас несколько кнопок привязаны к методу onClick(), то щелчок покажет текст нажатой кнопки.

Дополнительное чтение

SwipeButton — кнопка с поддержкой свайпа

Библиотеки

dmytrodanylyk/circular-progress-button — ещё один вариант кнопок с индикатором прогресса.

Программирование кнопки андроид

Так как подобной темы нет, а информация по данному вопросу разбросана небольшими частями по различным темам форума решил, создать данную тему с общей инструкцией.
Для всех действий необходим root.
Работать будем с файлами расположенными в systemusrkeylayout

Остановимся на файлах, которые необходимо редактировать (это, пожалуй, самый сложный этап):
Имя файла зависит от фирмы производителя, модели и версии прошивки, но как я заметил есть следующая тенденция: до Android 2.3.5 включительно, имя нужного нам файла формировалоcь следующим образом ***-keypad.kl (или ***- kpd.kl), где *** — заводское имя вашей модели.

    Известные мне примеры:
  • Gigabyte Gsmart G1310 — qrd-keypad.kl
  • Gigabyte Gsmart G1355 – msm7627_sku5_keypad.kl
  • LG P500 Optimus One – thunder_keypad.kl
  • LG E405 Optimus L3 Dual — surf_keypad.kl и 7x27a_kp.kl
  • LG E730 Optimus Sol – victor-keypad.kl (touch-keypad.kl)
  • LG GT450 – swift.kl (не уверен, но люди пишут)
  • HTC Hero — heroc-keypad.kl
  • HTC Desire — bravo-keypad.kl
  • HTC Explorer — pico-keypad.kl
  • HTC Desire S — saga-keypad.kl
  • HTC Desire HD — spade-keypad.kl
  • HTC Sensation — pyramid-keypad.kl
  • Samsung Galaxy S I9000 — melfas-touchkey.kl и s3c-keypad.kl
  • SE Live with Walkman — pm8058-keypad.kl и msm_pmic_pwr_key.kl (во втором файле только кнопка питания)
  • Sony Ericsson Xperia X8 – shakira-keypad.kl
  • Sony Ericsson Xperia X10 – es2009ra_keypad.kl
  • Star A2000 / A2000 GPS — MT6516-kpd.kl и QWERTY.kl
    * — планируется наполнение списка с Вашей помощью, если есть замечания указывайте.

Начиная с 4.0.3 всё изменилось, могу отметить, что для HTC вторая часть файла стала touchscreen.
Известные мне примеры:

  • Sony LT22i Xperia P – so34-buttons.kl (3 нижние кнопки), ux500-ske-keypad.kl (боковые кнопки)
  • HTC ONE V — atmel-touchscreen.kl (3 нижние кнопки), primou-keypad.kl (боковые кнопки)
  • HTC Desire S — atmel-touchscreen.kl (4 нижние кнопки), saga-keypad.kl (боковые кнопки)
  • HTC Sensation – cy8c-touchscreen.kl (4 нижние кнопки), pyramid-keypad.kl (боковые кнопки)
  • Samsung i9250 Galaxy Nexus (android 4.2.1), вероятней всего sii9234_rcp.kl
    * — планируется наполнение списка с Вашей помощью, если есть замечания указывайте.

    Файлы кнопок проводной гарнитуры обычно имеют вид:

  • 7k_headset.kl
  • h2w_headset.kl
    • POWER – блокировка/разблокировка
    • HOME – возврат на основной экран
    • MENU – вызов меню
    • BACK — возврат к предыдущему действию
    • SEARCH – вызов поиска
    • VOLUME_DOWN – понижение уровня громкости
    • VOLUME_UP – повышение уровня громкости
    • CALL – вызов Phone.apk (позволяет отвечать на вызов)
    • ENDCALL – завершение звонка
    • CAMERA – вызов Camera.apk
    • FOCUS – автофокус
    • DPAD_CENTER – курсор (касание) по центру
    • DPAD_UP – курсор (касание) вверх*
    • DPAD_DOWN – курсор (касание) вниз*
      * — установка этих значений на кнопки 115 и 114 соответственно позволяет добиться пролистывания текстов или страницы браузера кнопками громкости.
    • DPAD_LEFT – курсор (касание) влево
    • DPAD_RIGHT – курсор (касание) вправо
    • MUTE – выключение звука музыки без остановки трека
    • MEDIA_NEXT – следующий трек
    • MEDIA_PLAY_PAUSE – проигрывать/пауза
    • MEDIA_STOP – остановить трек
    • MEDIA_PREVIOUS – предыдущий трек
    • MEDIA_REWIND — перемотка
    • MEDIA_FAST_FORWARD – ускорить воспроизведение
    • HEADSETHOOK – кнопка гарнитуры – позволяет отвечать на вызовы, класть трубку и управлять плеером
    • GRAVE — ?
    • APP_SWITCH (RECENT_APP) – вызов панели «Недавние» с возможностью переключаться между приложениями (либо вызов диспетчера приложений в зависимости от прошивки.

    Также следует обратить внимание на такие дополнительные параметры как:

  • WAKE
  • WAKE_DROPPED
    Если стоит WAKE то после нажатия в спящем режиме смарт «проснётся» и выполнит действие, а при WAKE_DROPPED просто «проснётся», без передачи кода кнопки на выполнение.
    • Если у вас кастомный recovey (а вероятней всего он у вас такой), то во вкладке advanced можно воспользоваться функцией key test.
    • Программа KeynrTracker. KeynrTracker.apk ( 8,32 КБ )

    Программа Keycode CheckerKeycodeChecker.apk ( 10,3 КБ )

    • Самый простой способ. Заключается в редактировании нужных файлов прямо в папке keylayout, для этого используем ES Проводник (RootExplorer, Total Commander, ну или что-то на свой вкус (я пользуюсь ES Проводником и вам советую)): открываем – меняем требуемые значения – закрываем с сохранением изменений – перезагружаем девайс. При этом в папке keylayout будет создан фаил ****.kl.bak в котором сохранятся первоначальные значение изменённого вами файла. Также можно редактировать копию файла на SD карте или ПК, а затем вставлять с заменой в keylayout.(Проверено)

    Программа Easy Android Tools (EAT). Программа позволяет подключать телефон как через USB кабель так и по WiFi. После подключения и распознания телефона программой в правом окне Вы увидите содержимое внутренней памяти телефона. Переходим в Необходимо system/usr/keylayout, находим нужный фай, редактируем его в EAT Editor (F4), сохраняем изменения, перегружаем смарт и готово. (Программа подразумевает наличие на вашем ПК USB драйверов для вашего устройства (их можно найти на оф сайте программы), и HTC Syns для HTC)
    EAT_1.3.1.RUS.Setup.exe ( 1,78 МБ )

    Для этого метода нам потребуется Android SDK tools, знание точного названия файл который нам надо менять (можно посмотреть через ES Проводник и тд. и. тп.)
    В командной строке переходим в папку с Android SDK tools (у меня это C:Android), далее выполняем следующее. (Необходимо наличие на вашем ПК USB драйверов для вашего устройства)

    Перегружаем аппарат и готово. Android.zip ( 572,31 КБ )
    (Проверено)

  • Заключается в редактировании файла на ПК, и создание zip архива для прошивки через recovey, пример такого архива для HTC Desire S прилагаю, но тут надо навыки по написанию файла updater-script. Recent_Apps_on_Search_for_Desire_S.zip ( 252,14 КБ )
    (Проверено)
  • ButtonRemapper – позволяет переназначать кнопки, но работает некорректно на многих устройствах особенно с android 4.0.3 и выше. Более разработчиком не поддерживается, Следует отметить, что в теме по этому приложению достаточно много информации по ручному переназначению кнопок.

    ButtonRemapper Galaxy Tab Tab_ButtonRemapper_v1.1.apk ( 67,09 КБ )

    ButtonRemapper Galaxy S ButtonRemapper_Galaxy_S.apk ( 72,76 КБ )

    Headset Button Controller – управление музыкальным проигрывателем и другими функциями телефона с проводной гарнитуры.

    DreamKeys – программа для переназначения кнопок телефона, идея заключается в перехвате команд нажатий и присвоение им других действий, root не нужен (возможна настройка на долгое нажатие).

  • Button Shortcut — Назначение программ на кнопки «Камера» или «Поиск»
  • Сообщение отредактировал dеym — 26.07.19, 16:29

    Назначаем альтернативные действия на физические кнопки android-смартфона: «Переназначение клавиш» и Button Mapper

    Страницы материала

    Оглавление

    Вступление

    Многим знакома ситуация, когда покупаешь новый смартфон, а у физической кнопки питания нет функции фотографирования, как нет и отдельной клавиши для этого, а ведь на прошлом аппарате она была и здорово выручала. На первый взгляд мелочь, но руки сами тянутся к механике, а не сенсору, причем в самый неподходящий момент.

    реклама

    Для начала представлю подопытных. Первое приложение так и называется: «Переназначение клавиш», по крайней мере в русском Google Play. Оно умеет работать как с физическими, так и сенсорными манипуляторами, но для некоторых действий требует root-прав. Вторым участником станет Button Mapper, умеющий то же самое, но не требующий вообще root-прав, что уже интересно.

    В качестве тестового оборудования использовались:

    • Планшет DEXP Ursus 8EV2 3G (Android 4.4.2, процессор MT8382, 4 x Cortex-A7 1.3 ГГц, видеоядро Mali-400 MP2, 1 Гбайт ОЗУ, аккумулятор 4 000 мАч, 3G-модуль, Wi-Fi 802.11b/g/n);
    • Смартфон Homtom HT3 Pro (Android 5.1 Lollipop, процессор MT6735P, 4 x Cortex-A53 1.0 ГГц, 64-бит, видеоядро Mali-T720, 2 Гбайт ОЗУ, аккумулятор 3 000 мАч, 4G-модуль, Wi-Fi 802.11b/g/n).

    реклама

    Обзор приложения «Переназначение клавиш»

    Программа давно не обновлялась, но возможно это и не нужно, поскольку она умеет делать все, что можно делать с физическими клавишами: назначать любое действие, запускать определенные приложения, отключать кнопки и даже прописывать комбинации нажатий для доступа к особым функциям.

    «Переназначение клавиш» работает только с Android 4.3 или выше, распространяется условно-бесплатно и включает переведенный на русский интерфейс. Таким образом, мы получаем своеобразный эталон для таких программ, на который в дальнейшем и будем опираться. А может и не будем, ведь это только первое впечатление.

    Не стоит забывать о том, что немаловажную роль играет прошивка устройства, особенно если она модифицированная, поэтому не нужно относиться к программе как к панацее.

    Знакомство и предварительная настройка

    Перво-наперво надо разрешить программе доступ к специальным возможностям, что актуально для Android 5.0 или выше. В противном случае ничего работать не будет.

    Не обошлось и без премиум-версии, которая:

    • Отключает рекламу;
    • Позволяет назначить действия на комбинацию клавиш;
    • Позволяет установить более двух обычных переназначений.

    На мой взгляд, смысл в ней определенно есть, благо просят всего 59 рублей (цена актуальна на момент написания этих строк).

    И поскольку других предварительных настроек нет, перехожу к обзору основных возможностей.

    Оценка основных возможностей

    В перечень функций входит:

    • Возможность поменять клавиши местами;
    • Установить дополнительные действия по короткому или долгому нажатию;
    • Открыть камеру, браузер или приложение звонка по нажатию на кнопку;
    • Открыть любое приложение по выбору пользователя;
    • Отключить кнопку полностью;
    • Поддержка переназначения клавиш Home, Back, Recent apps, Меню, Камера, Клавиши громкости и более двухсот других клавиш;
    • Поддержка комбинаций клавиш, двойного и тройного нажатия в Premium-версии;
    • Экспериментальная функция Alt+Tab (только в премиум-версии);
    • Возможность остановить текущее запущенное приложение (нужны root-права).

    реклама

    Легко заметить, что root-права все-таки нужны, но не обязательны.

    Интерфейс приложения – русский, однооконный. В самом низу «+» для назначения действий на клавиши, выше можно снять галку с «Показывать иконку приложения», но только в платной версии, а также деактивировать сервис.

    Программирование кнопки андроид

    Класс Button — самый используемый из всех элементов управления. Так как является наследником Textview, то использует многие знакомые нам атрибуты: textColor, textSize и другие.

    Если разместить на экране кнопку и нажать на неё, то ничего не произойдёт. Необходимо написать код, который будет выполняться при нажатии. Существует несколько способов обработки нажатий на кнопку. Итак, обработка событий.

    Обработка событий

    Принцип обработки событий прост: источник генерирует событие и посылает его одному или более слушателям (listener). В этой схеме слушатель просто ожидает до тех пор, пока не получит событие. Как только событие получено, слушатель обрабатывает его и возвращает управление.

    В этой модели обработки событий слушатели должны:

    • регистрироваться источником, для того чтобы получать извещения о событиях;
    • иметь методы для обработки событий.

    Таким образом, чтобы создавать приложения, взаимодействующие с пользователем, необходимо:

    • зарегистрировать его для требуемого элемента управления,
    • написать обработчик события.

    Методы, принимающие и обрабатывающие события, определены в наборе интерфейсов .

    Класс view содержит набор интерфейсов, которые называются on. Listener(), в каждом из которых объявлен единственный абстрактный метод обратного вызова. Этот метод необходимо переопределить в пользовательском классе. Его будет вызывать система Android, когда экземпляр view (или потомок), к которому был подсоединен слушатель события, вызывается пользовательским взаимодействием с интерфейсом приложения.

    Всего класс view содержит шесть интерфейсов:

    • OnClickListener;
    • OnLongClickListener;
    • OnFocusChangeListener;
    • OnKeyListener;
    • OnTouchListener;
    • OnCreateContextMenuListener.

    Обработка нажатия кнопки

    Следующий пример реализует обработчик события onCiick(). Когда выполняется щелчок на кнопке, появляется сообщение, отображающее имя кнопки.

    Создайте новый проект MyButton. Откройте файл разметки и разместите три кнопки с идентификаторами button1, button2 и button3, надписями «Button l», «Button 2» и «Button 3», а также две метки с идентификаторами textView1 и textView2 и надписями: у первой ”Нажата кнопка:”, а у второй оставляем значение по умолчанию ”TextView”. Графическая разметка с обозначениями представлена ниже.

    Существует несколько способов обработки нажатия на кнопку. Рассмотрим их.

    Первый способ

    Первый способ разработан для Android и использует атрибут XML – onClick, который записывается в XML-коде элемента управления (в частности и Button), нажатие которого мы собираемся обрабатывать.

    android:

    android:onClick – атрибут, которому присваивается имя метода обработки события

    onMyClick – метод, который будет обрабатывать нажатие. Имя метода должно быть осмысленным. Сам метод записывается в программном коде активности.

    В классе активности метод записывается в следующем формате:

    Попробуем этот метод на практике. Сделайте следующее:

    1. Для каждой кнопки в XML-коде кнопки запишете обработчик:

    android:

    Обработчик будет один для всех кнопок.

    2. В классе public class MainActivity extends Activity <

    Запишем один метод onMyClick, который будет обрабатывать все кнопки

    Выполните компиляцию проекта. При нажатии соответствующей кнопки в надписи под кнопками будет отображаться сообщение о нажатии этой кнопки.

    Второй способ

    Второй способ является традиционным для Java и использует интерфейсы. Для этого в нашем классе необходимо реализовать интерфейс View.OnClickListener. Данный интерфейс содержит единственный метод:

    abstract void onClick(View v), который необходимо определить в нашем классе.

    Подключение интерфейса выполняется следующим образом:

    1. В классе public class MainActivity extends Activity напечатаете implements View.OnClickListener<.

    Для написания используйте подсказки Eclipse: наберите слово i и нажмите комбинацию клавиш Ctrl+Space для вывода вариантов продолжения. Eclipse предложит ключевое слово implements, нажимаем Enter. Далее, набираем View, ставим точку, Eclipse предложит список вариантов, выбираем OnClickListener.

    После этого будет сообщение об ошибке: подчеркнуто красной волнистой линией имя класса MainActivity, наводим на него курсор и выбираем «Add unimplemented methods».

    Eclipse создаст заготовку метода onClick(View v):

    2. В методе protected void onCreate(Bundle savedInstanceState) <

    выполняем поиск наших кнопок (findViewById) и регистрируем каждую кнопку как слушателя событий с помощью метода setOnClickListener():

    Все готово. Осталось написать код обработчика нажатия кнопок.

    Для демонстрации второго метода обработки нажатия наших кнопок внесем в наш класс следующие изменения:

    Удалим из XML-файла для всех кнопок

    android:

    полностью заменим метод public void onMyClick(View v) < …>.

    Напишем обработчик onClick(View v). Код этого обработчика повторяет код прежнего обработчика: различия только в названии метода и выводимом тексте.

    Делаем красивые кнопки в Android

    Одним из важных компонентов пользовательского интерфейса в приложения является кнопка. Она используется для выполнения различных действий пользователя.

    В этой статье мы приведём примеры использования и стилизации кнопки.

    Добавляем кнопку на разметку

    Пользовательский интерфейс приложения определён в XML-файле с разметкой. Вы можете добавить элемент Button и установить атрибуты вручную. Или вы можете, воспользовавшись инструментом дизайна, добавить Button из палитры элементов и задать атрибуты.

    Атрибуты кнопки

    Button является подклассом TextView и наследует атрибуты от TextView и View. Ниже приведены некоторые важные атрибуты кнопки, которые можно использовать для настройки стиля и поведения.

    • background: установка в качестве фона как цвета, так и drawable
    • onClick: установить метод, который будет запускаться при нажатии на кнопку
    • minHeight: для определения минимальной высоты кнопки
    • minWidth: для определения минимальной ширины кнопки
    • stateListAnimator: определение анимации при изменении состояния кнопки
    • focusable: для определения того, будет ли обработано нажатие клавиши
    • clickable: указать, является ли кнопка кликабельной
    • gravity: установка выравнивания текста кнопки
    • textAppearance: установить стиль текста

    Включение и выключение кнопки

    Вы можете использовать атрибут enabled для включения или выключения кнопки, установив его в true или false. Также это можно сделать программно, вызвав метод setEnabled(), как показано ниже:

    Кнопка с Drawable

    Вы можете отображать на кнопке вместе с текстом изображение, используя drawableTop, drawableRight, drawableBottom или drawableLeft, в зависимости от того, где располагать картинку, как показано на скриншоте ниже.

    ImageButton

    Android также предоставляет ImageButton, задачей которого является использование изображения в качестве кнопки. Чтобы установить изображение, вы можете использовать атрибут src. Вы также можете использовать разные изображения, которые будут меняться в зависимости от состояния кнопки, меняя в XML drawable selector как показано ниже.

    Пример XML drawable selector

    Обработка нажатий на кнопку

    Клики можно обрабатывать двумя способами. Первый — это установить атрибут onClick в разметке XML. Второй — назначить кнопке слушатель в коде активности или фрагмента.

    Чтобы установить атрибут onClick, сначала определите метод типа void, принимающий в качестве параметра View, в активности или фрагменте и затем используйте имя этого метода как значение для атрибута onClick, как показано ниже.

    Ниже приведён код обработки нажатия с помощью слушателя.

    Дизайн и стили кнопок

    Вы можете применять стили и темы для изменения внешнего вида кнопок. Платформа Android предоставляет заранее определённые стили. На рисунке ниже вы можете увидеть, как отображаются кнопки с различными стилями.

    Пример применения темы для кнопки.

    Настройка стилей кнопок

    Вы можете изменить цвета по умолчанию для стилей, применяемых к кнопке, установив атрибут colorAccent на уровне приложения и атрибут colorButtonNormal на уровне виджета для нужных цветов. Атрибут colorControlHighlight используется для установки цвета кнопки, когда она находится в нажатом состоянии.

    Как только вы определите собственный стиль, вы можете применить его к кнопкам с помощью атрибута theme. Ниже приведен пример пользовательской темы.

    Кнопка с закруглёнными углами

    Вы можете определить элемент inset, как показано ниже, чтобы создать кнопку с закруглёнными углами и сохранить файл с drawable в папке res/drawable. Вы можете увеличить или уменьшить атрибут радиуса элемента, чтобы отрегулировать радиус углов кнопки.

    Затем определите стиль, задающий атрибут background для xml drawable и примените его к кнопке с помощью атрибута style.

    Высота и тень кнопки

    Вы можете установить атрибуты elevation и translationZ, чтобы нарисовать тень кнопки.

    Настройка анимации тени

    Вы можете определить различные свойства теней для разных состояний кнопки и анимировать переход путём определения селектора. Вы можете применить аниматор к кнопке, используя свойство stateListAnimator.

    Обратите внимание, что stateListAnimator установлен в null в приведённом выше примере. Это было сделано для удаления аниматора по умолчанию, чтобы elevation и translationZ работали.

    Чтобы настроить анимацию тени при изменении состояния кнопок, вам нужно определить селектор, как показано ниже, в папке res/animator и установить свойство stateListAnimator своей темы для определённого аниматора.

    Примените следующую тему, которая использует аниматор, к кнопке с использованием атрибута style или theme.

    Простая кнопка логина

    Совмещая всё вышесказанное, можно создать красивую кнопку, позволяющую, например, заходить пользователям на свои аккаунты. Код разметки будет выглядеть следующим образом:

    Кроме того, с помощью атрибута drawableLeft можно добавить изображение к нашей кнопке, в том числе и векторное. На старых устройствах, векторные изображения вызывают падение всего приложения, поэтому сделаем это программно в коде активности при помощи AppCompatResources:

    Метод setCompoundDrawablesWithIntrinsicBounds() делает то же, что и атрибуты drawableLeft, drawableTop и так далее. В качестве параметров нужно указать, где именно будет размещаться изображение (указываем null в случае, если здесь изображение не нужно).

    Ссылка на основную публикацию
    ВсеИнструменты
    Adblock
    detector