fundo
No aplicativo discador do Android, quando você começa a pesquisar algo e clica no botão de seta à esquerda do EditText, obtém um efeito de ondulação circular sobre ele:
O problema
Eu tentei ter também, mas consegui um retangular:
<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"/>
A questão
Como faço para que o botão tenha um efeito de ondulação circular ao ser clicado? Tenho de criar um novo drawable ou existe uma forma incorporada para isso?
android
button
rippledrawable
desenvolvedor android
fonte
fonte
Respostas:
Se você já tem uma imagem de plano de fundo, aqui está um exemplo de ondulação que se parece com selectableItemBackgroundBorderless:
ic_filter_state.xml:
state_pressed_ripple.xml: (opacidade definida para 10% no fundo branco) 1AFFFFFF
fonte
Se você estiver usando o tema AppCompat, poderá definir o plano de fundo da visualização como:
Isso adicionará ondulação circular em 21 e acima e fundo quadrado abaixo de 21.
fonte
android:clipChildren="false"
nos layouts também para permitir que a animação se propague.Outro atributo com efeito de ondulação redondo, especialmente para barra de ação:
UPD : a cor ondulada pode ser alterada por este atributo:
Mas lembre-se de que esse atributo se aplica a todos os efeitos de propagação padrão.
fonte
?
é um atalho para?attr/
Crie e defina um drawable ondulado como plano de fundo. Algo assim.
fonte
Basta adicionar este fundo à sua visualização
android:background=?android:attr/actionBarItemBackground
fonte
Você pode criar drawable de ondulação de círculo usando o
android:radius
atributo em xml.Exemplo:
Preste atenção para que sua
your_radius
largura e altura de visão sejam menores. Por exemplo: se você tem visão com o tamanho60dp x 60dp
your_radius
deve ser próximo30dp
(largura / 2 ou altura / 2).fonte
Se você quiser arquivos XML mais genéricos, tenho dois arquivos:
1) btn_ripple_background com código:
2) ripple_circuler_shape com código:
finalmente o uso:
android:foreground="@drawable/ripple_btn_background"
fonte
Experimentar:
fonte
Se você deseja um efeito cascata que não ultrapasse o limite do círculo, pode verificar este código. Funciona perfeitamente para mim. Apenas lembre-se, você deve fornecer id = @ android: id / mask em ripple_blue.xml
ripple_blue.xml
color.xml
fonte
apenas adicione este item no seu
fonte
Em Kotlin / Java, você pode fazer o seguinte
fonte