Intereting Posts
Как почтить и распаковать файлы? Есть ли причина использовать шаблон Observer над широковещательным приемником? Что происходит, когда приложение падает? Метка EditText? Создавать уникальный идентификатор int в качестве идентификатора уведомления Android Рисованное изображение на холсте Автономный вектор TileProvider, который расширяет карту google api v2 в android Spannable для android для textView Является ли привязка JavaScript JNI для Android эффективно передавать TypedArray / ArrayBuffer в Java в виде массива? Как показать только верхнюю и нижнюю границу Gps статус включен / отключен широковещательный приемник Android: бинация Inapp: ошибка ответа: 7: элемент уже принадлежит Удалите все элементы из RecyclerView Как добавить контент приложения с описанием и предварительным просмотром результатов поиска Google? Могу ли я получить некоторую эффективность, объявив соответствующих участников «статическими» в действии Android

Цвет фона пульсации Android

Я использую эффект пульсации на моем навигационном ящике. Я установил его так и применил его к моему ListView:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_activated="true" android:drawable="@color/black_200" /> <item android:state_pressed="true" android:color="@color/black_200"> <ripple android:color="@color/black_400" /> </item> <item android:drawable="@color/white" /> </selector> 

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

Solutions Collecting From Web of "Цвет фона пульсации Android"

Вы можете управлять цветом RippleDrawable , выполнив следующие действия:

 RippleDrawable rippleDrawable = (RippleDrawable)view.getBackground(); // assumes bg is a RippleDrawable int[][] states = new int[][] { new int[] { android.R.attr.state_enabled} }; int[] colors = new int[] { Color.BLUE }; // sets the ripple color to blue ColorStateList colorStateList = new ColorStateList(states, colors); rippleDrawable.setColor(colorStateList); 

Или через XML:

 <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="#FFFF0000"> <!-- The ripple will be red --> <!-- the normal bg color will be light grey --> <item> <color android:color="#FFDDDDDD" /> </item> <!-- make sure the ripple doesn't exceed the bounds --> <item android:id="@android:id/mask"> <shape android:shape="rectangle"> <solid android:color="?android:colorAccent" /> </shape> </item> </ripple> 

РЕДАКТИРОВАТЬ

Увидев ответ @ i.shadrin ниже, я должен признать, что это гораздо более простой подход (с использованием стилей). Если это вариант для вас, я бы рекомендовал его.

С стилями намного проще сделать:

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> ... <item name="colorControlHighlight">@color/ripple_material_dark</item> ... </style> 

Добавьте эти две строки кода внутри своего представления, чтобы получить эффект пульсации.

 android:clickable="true" android:background="?attr/selectableItemBackground" 

Пример пульсации для использования с селектором на api lvl 21 и выше

 <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?attr/colorControlHighlight"> <!-- ripple mask --> <item android:id="@+id/mask"> <color android:color="@android:color/white"/> </item> <!-- background shape or color --> <item android:drawable="@drawable/rectangle_rounded_steel_blue"/> </ripple> 

Если вы используете пользовательский цвет кнопки, используйте ниже код для эффекта пульсации. Сохраните файл в drawable с именем my_ripple.xml и установите в фоновом режиме кнопку.

  <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" xmlns:too`enter code here`ls="http://schemas.android.com/tools" android:color="@color/ripple_color" tools:targetApi="lollipop"> <item android:id="@android:id/mask"> <shape android:shape="rectangle"> <solid android:color="@color/ripple_color" /> </shape> </item> <item android:id="@android:id/background" android:drawable="@color/button_color" /> </ripple>