- Круглая кнопка Android, интерактивная область
- 4 ответа
- Закругленная кнопка в Android
- 9 ответов
- Делаем красивые кнопки в Android
- Добавляем кнопку на разметку
- Атрибуты кнопки
- Включение и выключение кнопки
- Кнопка с Drawable
- ImageButton
- Обработка нажатий на кнопку
- Дизайн и стили кнопок
- Настройка стилей кнопок
- Кнопка с закруглёнными углами
- Высота и тень кнопки
- Настройка анимации тени
- Простая кнопка логина
- Как сделать круглую кнопку?
- Button (Кнопка)
- Общая информация
- Три способа обработки событий нажатий на кнопку
- Первый способ — атрибут onClick
- Второй способ — метод setOnClickListener()
- Третий способ — интерфейс OnClickListener
- Плодитесь и размножайтесь — это про кошек, а не про кнопки
- Сделать кнопку недоступной
- Сделать кнопку плоской
- Коснись меня нежно
- Получить текст с кнопки
- Дополнительное чтение
- Библиотеки
Круглая кнопка Android, интерактивная область
Я сделал эту круглую кнопку в Android Studio:
Я использовал собственный фон. Проблема в том, что выделенная желтая область на изображении активна. Я хочу уменьшить интерактивную область до красного кружка.
Есть ли способ сделать это?
4 ответа
Вы не можете удалить эту прозрачную область изображения. Потому что это часть вашего имиджа.
Любые изображения всегда имеют прямоугольную форму . Если углы изображения прозрачны, это не означает, что эти пиксели в углу отделены от изображения! Эти пиксели всегда заняты вашим изображением , и вы не можете удалить та область.
Еще не создано библиотеки, которая могла бы отделить прозрачную область изображения от самого изображения.
Создайте xml-файл следующим образом:
Сохраните его как round_button.xml в папке с возможностью переноса
И установите его в качестве фона для кнопки в xml следующим образом:
Лучше поздно, чем никогда.
Да , вы можете вручную уменьшить интерактивную область до красного круга, если вы перехватываете и фильтруете события касания, реализуя View.OnTouchListener или переопределение onTouchEvent (). Последнее требует от вас подкласса вашей кнопки, что достаточно просто, но, возможно, не так желательно, поэтому вот пример использования View.OnTouchListener для выполнения этой работы:
OvalTouchAreaFilter.java:
Внутренняя активность onCreate ():
Обратите внимание, что:
isInTouchArea() может быть произвольно реализован, чтобы установить для интерактивной области любую желаемую форму, даже потенциально в зависимости от сложных условий, таких как фоновое изображение кнопки и т. Д.
setOnTouchListener() не относится к классу Button . Это решение можно использовать с любым типом просмотра.
Простая фильтрация всех сенсорных сообщений на основе их положения X и Y — не лучшее решение (например, как предлагается в ответах здесь), поскольку вы тем самым нарушаете Гарантия согласованности MotionEvent. Вместо этого это решение отфильтровывает полные жесты (последовательности MotionEvent , начинающиеся с ACTION_DOWN и заканчивающиеся на ACTION_UP / ACTION_CANCEL , возможно, со многими другими действия между ними вроде ACTION_MOVE ) на основе их начальных координат. Это означает, что подход не нарушается в ситуациях с несколькими касаниями.
Предыдущее сообщение касалось интерактивной области изображения, но . это могло не решить этот случай здесь.
Вместо этого вы должны использовать OnTouchListener, чтобы получить x и y события касания, затем вычислите и сравните расстояние между центром и четностью с радиусом, чтобы определить, является ли это щелчком по значению.
Источник
Закругленная кнопка в Android
Я хочу создать округлые кнопки в программе Android. Я посмотрел на Как создать EditText с закругленными углами?
чего я хочу добиться-это:
- Кнопки С Закругленным Краем
- изменить фон кнопки / внешний вид в разных состояниях (например, Onclick, фокус)
- используйте мой собственный PNG для фона и не создавайте фигуру.
9 ответов
вы можете сделать кнопку с закругленным углом, не прибегая к ImageView.
ресурс селектора фона, button_background.xml :
для каждого государства, катры ресурсов, например, button_press.XML-код:
Примечание corners атрибут, это дает вам закругленные углы!
затем установите фон drawable на кнопку:
EDIT (9/2018): тот же метод можно использовать для создания круглой кнопки. Круг-это действительно просто квадратная кнопка с размером радиуса, установленным на 1/2 стороны квадрата
кроме того, в примере выше stroke и gradient не являются необходимыми элементами, они просто примеры и способы, которые вы сможете увидеть форму закругленного угла
Если вам нужна закругленная кнопка в Android, то создайте XML-файл » RoundShapeBtn.xml » как drawable.
добавить в код кнопки:
создать xml-файл в папке drawable в android, как:
теперь этот xml-файл в качестве фона кнопок.
рекомендуется Google что вы не имитируете элементы пользовательского интерфейса с других платформ. Я бы не стал помещать округлые кнопки стиля iOS в приложение для Android.
расширения ImageView вот так:
и примените к нему свой обычный фоновый ресурс, и он должен быть обрезан с закругленными углами.
Это можно сделать с помощью атрибута углу. Посмотрите на ниже xml.
гораздо лучше поместить состояния и формы кнопок в 1 XML-файл селектора. Это должно сделать ваше приложение работать быстрее / лучше. Попробуйте это (любезно предоставлено введение в разработку приложений для Android). Не спамить здесь просто показываю, что это не мой код.
С.-конструкции П. совет: градиенты и скругленные прямоугольники лучше всего использовать, когда вы вряд ли можете сказать, что они есть-используйте с умом.
закругленные кнопки можно создавать с помощью формы кольца drawable Также, см. http://www.zoftino.com/android-shape-drawable-examples
создать Катры ресурсов с именем btnOval—>затем мимо кода ;
Источник
Делаем красивые кнопки в 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 в случае, если здесь изображение не нужно).
Источник
Как сделать круглую кнопку?
Я пытаюсь сделать круглую кнопку, но я не знаю, как я могу это сделать. Я могу сделать кнопку с закругленными углами, но как я могу округлить круг. Это не одно и то же. Пожалуйста, скажите, возможно ли это на Android? Спасибо.
Создайте xml-файл с именем roundedbutton.xml в папке с возможностью roundedbutton.xml
Наконец, установите это как фон для вашей Button как android:background = «@drawable/roundedbutton»
Если вы хотите сделать его полностью закругленным, измените радиус и согласитесь на то, что вам подходит.
Если вы используете Android Studio, вы можете просто использовать:
Это отлично работает для меня, надеюсь, что это кому-то поможет.
Создайте файл drawable / button_states.xml, содержащий:
Используйте его в теге кнопки в любом файле макета
Круглая кнопка Android для Android Маркуши:
(Эта библиотека устарела и не происходит никаких новых разработок. Вместо этого используйте FAB).
Используйте ImageButton вместо Button ….
И сделать круглое изображение с прозрачным фоном
Использовал форму как овальную. Это делает кнопку овальной
И добавьте это в код кнопки
Кнопка раунда в Android
Вы можете сделать ImageButton с круговым фоновым изображением.
Для круглой кнопки создайте форму:
Используйте его в качестве фона ссылки на кнопку
Установите это на ваши ресурсы, извлекаемые XML, и простую кнопку использования и изображения с круглым изображением, используя ваш рисунок в качестве фона.
Да, возможно, найдите 9-патч в google. Хорошие статьи:
Изучите встроенные чертежи android:
Вы можете использовать Google FloatingActionButton
- Используйте кнопки изображения и сделайте фон как изображение, которое вы хотите.
- Создайте изображения с помощью ссылки на студию Android.
Msgstr «» «» » 2C% 200) & backColor = rgb (96% 2C% 20125% 2C% 20139) & crop = 1 & backgroundShape = circle & effects = none & name = ic_home «
И загрузите его, добавьте его, внутри которого найдите папку mipmap-hdpi.
Скопируйте изображение из папки mipmap-hdpi и вставьте его в папку drwable вашего проекта Android.
Источник
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 — ещё один вариант кнопок с индикатором прогресса.
Источник