Анимация imagebutton android studio

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. Добавляем анимацию к кнопкам (button)

20 апреля 2017 г. 2 ruslan-io 12436 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):

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

Источник

Как установить эффект нажатия кнопки в 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. Все остальные решения имеют другие недостатки.

Читайте также:  Формат xls для андроида

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

Пояснение:

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

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

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

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

Источник

How to set button click effect in Android?

In Android, when I set a background image to a button, I can not see any effect on it when it’s clicked.

I need to set some effect on the button, so the user can recognise that the button is clicked.

The button should be dark for a few seconds when it is clicked. How to do this?

16 Answers 16

This can be achieved by creating a drawable xml file containing a list of states for the button. So for example if you create a new xml file called «button.xml» with the following code:

To keep the background image with a darkened appearance on press, create a second xml file and call it gradient.xml with the following code:

In the xml of your button set the background to be the button xml e.g.

Hope this helps!

Edit: Changed the above code to show an image (YOURIMAGE) in the button as opposed to a block colour.

It is simpler when you have a lot of image buttons, and you don’t want to write xml-s for every button.

Create your AlphaAnimation Object that decides how much will be the fading effect of the button, then let it start in the onClickListener of your buttons

of course this is just a way, not the most preferred one, it’s just easier

You can simply use foreground for your View to achieve clickable effect:

For use with dark theme add also theme to your layout (to clickable effect be clear):

To make your item consistent with the system look and feel try referencing the system attribute android:attr/selectableItemBackground in your desired view’s background or foreground tag:

Use both attributes to get desired effect before/after API level 23 respectively.

Or using only one background image you can achive the click effect by using setOnTouchListener

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

And if you don’t want to use setOnTouchLister , the another way of achieving this is

For all the views

But for cardview which has elevation use

For Circular click effect as in toolbar

Also you need to set

This is the best solution I came up with taking hints from @Vinayak’s answer. All the other solutions have different drawbacks.

First of all create a function like this.

Explanation:

getConstantState().newDrawable() is used to clone the existing Drawable otherwise the same drawable will be used. Read more from here: Android: Cloning a drawable in order to make a StateListDrawable with filters

mutate() is used to make the Drawable clone not share its state with other instances of Drawable. Read more about it here: https://developer.android.com/reference/android/graphics/drawable/Drawable.html#mutate()

Usage:

You can pass any type of View (Button, ImageButton, View etc) as the parameter to the function and they will get the click effect applied to them.

Источник

Apply Material Design Touch Ripple to ImageButton?

I have an imagebutton that doesn’t respond with a touch animation when it is clicked because it is a static image unlike regular buttons on lollipop which come with the built in ripple effect. I would like to add the material design ripple touch effect to the image but can’t seem to find a way to implement it. I can set a color filter over the image but that is not the ripple effect. An example of what I’m trying to do is when you hold an album cover image in Google Play Music and a shadow ripple moves across the image.

5 Answers 5

For even better result:

You can just add a background to your ImageButton like this :

If you already have a background and don’t want to change it, use foreground;

I got good answers from i.shadrin (here) and Nicolars (here).

The difference between their answers is that ?attr/selectableItemBackgroundBorderless can give you an android.view.InflateException , so the ?android:attr/selectableItemBackground is the solution.

FWIW, I do not know why the exception happens, because the first answer worked fine in all my old projects, but in my recent project not (maybe because the app theme = android:Theme.Material ?).

The strange thing that was happening is that though the ripple effect was shown it was out-bounding the ImageButton, so the solution is:

  • To use the android:foreground=»?android:attr/selectableItemBackgroundBorderless» instead of android:background=»?android:attr/selectableItemBackgroundBorderless»

Hope it help you if you are facing the same.

Источник

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