Intereting Posts
Как легко перемещать ImageView слева направо в Android? Drag n drop textview в android Любой эквивалент раскадровки iOS для разработки Android? Android 5.0 Datepicker в scrollview не работает (без прокрутки месяцев) Фильтровать теги в LogCat (в Android Eclipse Plug-In) Преимущество введения тега Isolprocess в сервисах в JellyBean Кто-нибудь имеет контрольные показатели (код и результаты), сравнивающие производительность приложений Android, написанных на Xamarin C # и Java? ListView не запускает setOnLongClickListener, только setOnItemClickListener Неправильное поведение установщика пакетов Папки макета Android: макет, макет-порт, макет-земля Как объединить несколько изображений в одно изображение в Android? Передача файлов Android не работает через XMPP и OpenFire Не удалось проверить приложение после обновления до Lollipop Служба не останавливается при вызове метода stopService Изменение значка меню в панели действий в зависимости от открытого фрагмента

Цвет фона пульсации 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>