Android studio image button эффект нажатия

ImageButton (Кнопка-изображение)

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

Находится в разделе Buttons.

Компонент ImageButton представляет собой кнопку с изображением (вместо текста). По умолчанию ImageButton похож на обычную кнопку.

В режиме дизайна изображение на кнопке определяется атрибутом android:src

Можно сделать двойной щелчок, чтобы сразу установить нужное свойство.

Методы

Программно можно установить изображения через различные методы.

setImageBitmap() Используется, чтобы указать в качестве изображения существующий экземпляр класса Bitmap setImageDrawable() Используется, чтобы указать в качестве изображения существующий экземпляр класса Drawable setImageResource() Используется, чтобы указать в качестве изображения существующий идентификатор ресурса (см. пример) setImageURI() Используется, чтобы указать в качестве изображения существующий адрес типа Uri. В некоторых случаях элемент кэширует изображение и после изменения изображения по прежнему выводит старую версию. Рекомендуется использовать инструкцию setImageURI(null) для сброса кэша и повторный вызов метода с нужным Uri

Примеры

С помощью метода setImageURI() можно обратиться к ресурсу типа Drawable по его идентификатору:

Например, можно задать путь Uri:

Можно обратиться к ресурсу по его типу/имени:

В этом случае код будет следующим:

Щелчок

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

Теперь при каждом щелчке изображение на кнопке будет циклически переключаться между двумя картинками.

Продолжительное нажатие

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

Для обработки продолжительного нажатия нужно реализовать класс View.OnLongClickListener и передать его в метод setOnLongClickListener(). Класс OnLongClickListener имеет один обязательный метод OnLongClick(). В принципе это похоже на метод OnClick(), только имеет возвращаемое значение.

Запустите проект и убедитесь, что при быстром нажатии ничего не происходит, а при более продолжительном нажатии всплывает сообщение.

Источник

Как установить эффект нажатия кнопки в Android?

В Android, когда я устанавливаю фоновое изображение на кнопку, я не вижу никакого эффекта на кнопке.

Мне нужен какой-то эффект на кнопке, чтобы пользователь мог распознать, что кнопка нажата.

Кнопка должна быть темной в течение нескольких секунд при нажатии, что мне делать для этого?

Читайте также:  Тест памяти для android

Этого можно достичь, создав файл XML с возможностью рисования, содержащий список состояний кнопки. Так, например, если вы создаете новый XML-файл с именем «button.xml» со ​​следующим кодом:

Чтобы фоновое изображение оставалось затемненным при печати, создайте второй XML-файл и назовите его gradient.xml со следующим кодом:

В xml вашей кнопки установите фон как кнопку xml, например

Надеюсь это поможет!

Изменить: изменен приведенный выше код, чтобы на кнопке отображалось изображение (ВАШЕ ИЗОБРАЖЕНИЕ), а не цвет блока.

Это проще, когда у вас много кнопок с изображениями, и вы не хотите писать xml-файлы для каждой кнопки.

Создайте свой AlphaAnimation объект, который определяет, насколько будет эффект затухания кнопки, а затем позвольте ему начать в onClickListener ваших кнопках

конечно, это просто способ, не самый предпочтительный, просто проще

Вы можете просто использовать передний план для View достижения эффекта кликабельности:

Для использования с темной темой добавьте также тему в свою layout (чтобы эффект кликабельность был понятен):

Чтобы ваш элемент соответствовал внешнему виду системы, попробуйте сослаться на системный атрибут android:attr/selectableItemBackground в теге фона или переднего плана желаемого представления:

Используйте оба атрибута, чтобы получить желаемый эффект до / после уровня API 23 соответственно.

Или используя только одно фоновое изображение, вы можете добиться эффекта щелчка, используя setOnTouchListener

А если вы не хотите использовать setOnTouchLister , другой способ добиться этого —

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

Прокладки не позволят фону быть видимым и заставят кнопку действовать как другие кнопки.

Это лучшее решение, которое я придумал, взяв подсказки из ответа @ Vinayak. Все остальные решения имеют другие недостатки.

Прежде всего создайте такую ​​функцию.

Пояснение:

getConstantState (). newDrawable () используется для клонирования существующего Drawable, в противном случае будет использоваться тот же Drawable. Подробнее здесь: Android: клонирование объекта для рисования для создания объекта StateListDrawable с помощью фильтров.

mutate () используется для того, чтобы клон Drawable не делился своим состоянием с другими экземплярами Drawable. Подробнее об этом читайте здесь: https://developer.android.com/reference/android/graphics/drawable/Drawable.html#mutate ().

Использование:

Вы можете передать любой тип View (Button, ImageButton, View и т. Д.) В качестве параметра функции, и к ним будет применен эффект щелчка.

Читайте также:  Мегафон баланс для андроида

Источник

Установить эффект нажатия кнопки в Android

Я новичок в разработке приложений для Android и понял, что, в конце концов, для конечного пользователя действительно важен пользовательский интерфейс приложения.

Я всегда стараюсь изо всех сил, когда дело касается пользовательского интерфейса, но у меня всегда возникают проблемы. В частности, одна из основных проблем, с которыми я всегда сталкиваюсь, и я не знаю, как исправить, заключается в том, что когда я устанавливаю пользовательский цвет фона или изображение для какой-либо кнопки, эффект щелчка исчезает. Итак, вы нажимаете кнопку, и хотя она, очевидно, работает, довольно неприятно видеть, как она ничего не делает графически.

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

4 ответа

Допустим, у вас есть кнопка, TextView или любое другое представление. и вы хотите, чтобы он менял свой цвет во время события касания, а также что-то делал после щелчка:

А затем добавьте прослушиватель кликов:

Сохраните это как чертеж и установите в качестве фона:

Это всего лишь простой пример. Вы можете сами создавать более сложные.

Благодаря ответу Амира Хорева я понял, что мне действительно нужно. Я основал свое решение на его ответе, но вместо вызова метода setBackgroundColor () я использовал метод setColorFilter () вместо фона представления, чтобы вызвать как события ACTION_DOWN, так и ACTION_UP. Итак, теперь я могу установить цветовой фильтр для любой кнопки. Вот как окончательно выглядел код:

Я также написал такую функцию, как public void triggerActionDownEvent(Button button); , чтобы я мог вызывать эту функцию вместо того, чтобы писать весь предыдущий код для каждой кнопки. Теперь мне нужно будет следить за тем, чтобы одновременно нажималась не более одной кнопки.

Предлагаю программно настроить цвет или изображение. Ты можешь использовать:

Источник

Android. Добавляем анимацию к кнопкам (button)

20 апреля 2017 г. 2 ruslan-io 12467 android—>

Несколько простых примеров анимации кнопок (button) при нажатии в android приложении.

Сразу покажу результат данной статьи:

Если вам понравилось, то переходим к реализации.

Создаем новый проект в IDE или используем существующий.

Добавим описание анимации, для этого добавим в папку res подпапку anim (res/anim). Там будут хранится описания анимаций, добавим 4 файла (правой кнопкой мыши по папке anim, в выпадающем меню «New» => «Animation resource file»), которые будут описывать анимации:

/res/anim/alpha.xml (мерцание при нажатии):

/res/anim/rotate.xml (переварачивание при нажатии):

/res/anim/scale.xml (увелечение при нажатии):

/res/anim/anim_translate.xml (уезжает и приезжает при нажатии):

Читайте также:  Удалился аккаунт гугл андроид

Далее в activity_main.xml (/res/layout/activity_main.xml), добавляем 4 кнопки:

И добавляем обработку нажатия по кнопкам и анимацию в MainActivity (mainActivity.java):

Готово, запускаем и наслаждаемся результатам.

Источник

Как я могу дать эффект щелчка imageview, как кнопка на Android?

У меня есть imageview в моем Android-приложении, которое я использую как кнопку с событием onClick, но, как вы можете догадаться, он не дает imageview кликабельный эффект при нажатии. Как я могу этого достичь?

29 ответов

вы можете создавать различные изображения для состояний clicked / not clicked и устанавливать их в onTouchListener следующим образом

лучший выбор заключается в том, что вы определяете селектор следующим образом

и выберите изображение в случае:

вы можете сделать это с помощью одного изображения, используя что-то вроде этого:

Я, вероятно, сделаю это подклассом ImageView (или ImageButton, поскольку это также подкласс ImageView) для более легкого повторного использования, но это должно позволить вам применить «выбранный» вид к imageview.

Это можно сделать с только один файл изображения использование метода ColorFilter. Однако ColorFilter рассчитывает работать с ImageViews, а не с кнопками, поэтому вам нужно преобразовать кнопки в ImageViews. Это не проблема, если вы используете изображения в качестве кнопок, но это более раздражает, если у вас есть текст. В любом случае, если вы найдете способ обойти проблему с текстом, Вот код, чтобы использовать:

который применяет красный оверлей к кнопке ( цветовой код-это шестнадцатеричный код для полностью непрозрачного красного цвета-первые две цифры-прозрачность, затем это RR GG BB.).

редактировать: хотя оригинальный ответ ниже работает и легко настраивается, см. этот пост адвокатом разработчика Android в Google, если вы хотите / нуждаетесь в более эффективной реализации. Также обратите внимание, что android:foreground и приходя на все виды, включая ImageView, по умолчанию в Android M.

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

трюк заключается в том, чтобы обернуть ImageView в FrameLayout с атрибутом android:foreground что позволяет нам определить оверлея для его содержания. Если мы установим android:foreground селектору (например, ?android:attr/selectableItemBackground для уровня API 11+) и прикрепите OnClickListener к FrameLayout вместо ImageView, изображение будет перекрыто с drawable нашего селектора — the нажмите эффект мы желаем!

(обратите внимание, что это должно быть помещено в родительский макет.)

использовать style=»?android: borderlessButtonStyle» в XML-файле. Он покажет Android по умолчанию нажмите эффект.

Источник

Оцените статью