Добавить эффект пульсации на мою кнопку с цветом фона кнопки?

Я создал кнопку, и я хочу добавить эффект пульсации на эту кнопку!

Я создал кнопку bg XML-файл: (bg_btn.xml)

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#FFFFFF" android:endColor="#00FF00" android:angle="270" /> <corners android:radius="3dp" /> <stroke android:width="5px" android:color="#000000" /> </shape> 

И это мой файл эффекта пульсации: (ripple_bg.xml)

 <ripple xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:color="#f816a463" tools:targetApi="lollipop"> <item android:id="@android:id/mask"> <shape android:shape="rectangle"> <solid android:color="#f816a463" /> </shape> </item> </ripple> 

И это моя кнопка, которую я хочу добавить эффект пульсации:

 <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Button" android:id="@+id/button" android:layout_centerHorizontal="true" android:layout_marginTop="173dp" android:textColor="#fff" android:background="@drawable/ripple_bg" android:clickable="true" /> 

Но после добавления кнопки эффекта эффекта пульсации прозрачный экран и отображение кнопки только при нажатии: « Перед кликом и нажатием кнопки»

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

Добавить эффект пульсации / анимацию на кнопку Android

Просто замените свой фоновый атрибут кнопки на андроид: background = "? Attr / selectableItemBackground", и ваш код выглядит так.

  <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/selectableItemBackground" android:text="New Button" /> 

Другой способ добавить эффект пульсации / анимацию на кнопку Android

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

 <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:color="#f816a463" tools:targetApi="lollipop"> <item android:id="@android:id/mask"> <shape android:shape="rectangle"> <solid android:color="#f816a463" /> </shape> </item> </ripple> 

И установите фон кнопки для вышерасположенного файла ресурсов

 <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/ripple_effect" android:padding="16dp" android:text="New Button" /> 

В дополнение к решению Jigar Patel добавьте это в файл ripple.xml, чтобы избежать прозрачного фона кнопок.

 <item android:id="@android:id/background" android:drawable="@color/your-color" /> 

Полный xml :

  <ripple xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:color="@color/your-color" tools:targetApi="lollipop"> <item android:id="@android:id/mask"> <shape android:shape="rectangle"> <solid android:color="@color/your-color" /> </shape> </item> <item android:id="@android:id/background" android:drawable="@color/your-color" /> </ripple> 

Используйте этот ripple.xml в качестве фона в вашей кнопке:

 android:background="@drawable/ripple" 

Добавьте "?attr/selectableItemBackground" в атрибут foreground вашего представления, если он уже имеет фон вместе с android:clickable="true"

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

Обновление. Начиная с версии App.0.0.0 версии 23.0.0, существует новый цветной стиль Widget.AppCompat.Button.A, который использует цветную тему вашей темы colorbuttonNormal для отключенного цвета и colorAccent для включенного цвета.

Это позволяет применить его к вашей кнопке напрямую через

 <Button ... style="@style/Widget.AppCompat.Button.Colored" /> 

Вы можете использовать drawable в своем каталоге v21 для вашего фона, например:

 <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?attr/colorControlHighlight"> <item android:drawable="?attr/colorPrimary"/> </ripple> 

Это обеспечит ваш фоновый цвет: attr / colorPrimary и имеет анимацию пульсации по умолчанию, используя значение по умолчанию attr / colorControlHighlight (которое вы также можете задать в своей теме, если хотите).

Примечание: вам нужно создать настраиваемый селектор меньше, чем v21:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/primaryPressed" android:state_pressed="true"/> <item android:drawable="@color/primaryFocused" android:state_focused="true"/> <item android:drawable="@color/primary"/> </selector> 

Просто используйте:

 android:backgroundTint="#f816a463" 

Вместо:

 android:background="#f816a463" 

Не забудьте изменить свою Button на android.support.v7.widget.AppCompatButton