Задний план
В приложении для набора номера Android, когда вы начинаете что-то искать и нажимаете кнопку со стрелкой слева от EditText, вы получаете эффект круговой ряби на нем:
Эта проблема
Я тоже пробовал, но у меня прямоугольная:
<ImageButton
android:id="@+id/navButton"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="8dp"
android:background="?android:attr/selectableItemBackground"
android:src="@drawable/search_ic_back_arrow"/>
Вопрос
Как сделать так, чтобы кнопка имела эффект круговой ряби при нажатии? Нужно ли мне создавать новый объект для рисования или для этого есть встроенный способ?
android
button
rippledrawable
разработчик Android
источник
источник
Ответы:
Если у вас уже есть фоновое изображение, вот пример ряби, которая похожа на selectableItemBackgroundBorderless:
ic_filter_state.xml:
state_pressed_ripple.xml: (непрозрачность 10% на белом фоне) 1AFFFFFF
источник
Если вы используете тему AppCompat, вы можете установить фон представления как:
Это добавит круговую рябь на 21 и выше и квадратный фон на 21 ниже.
источник
android:clipChildren="false"
и макеты, чтобы анимация могла распространяться.Еще один атрибут с эффектом круглой ряби, специально для панели действий:
UPD : Цвет ряби можно изменить с помощью этого атрибута:
Но имейте в виду, что этот атрибут применяется ко всем эффектам пульсации по умолчанию.
источник
?
- это ярлык для?attr/
Создайте и установите рябь, которую можно рисовать в качестве фона. Что-то вроде этого.
источник
Просто добавьте этот фон к вашему просмотру
android:background=?android:attr/actionBarItemBackground
источник
Вы можете создать круговую рябь, которую можно рисовать, используя
android:radius
атрибут в xml.Пример:
Обратите внимание, что ваша
your_radius
ширина и высота должны быть меньше, чем у вас. Например: если у вас есть вид, размер60dp x 60dp
your_radius
должен быть рядом30dp
(ширина / 2 или высота / 2).источник
Если вам нужны более общие XML-файлы, у меня есть два файла:
1) btn_ripple_background с кодом:
2) ripple_circuler_shape с кодом:
наконец использование:
android:foreground="@drawable/ripple_btn_background"
источник
Если вам нужен эффект ряби, который не пересекает границу круга, вы можете проверить этот код. У меня это работает идеально. Просто помните, вы должны указать id = @ android: id / mask в ripple_blue.xml
ripple_blue.xml
color.xml
источник
Пытаться:
источник
просто добавьте этот элемент в свой
источник
В Kotlin / Java вы можете сделать следующее
источник