Eu tenho um botão de imagem que não responde com uma animação de toque quando é clicado porque é uma imagem estática, ao contrário dos botões regulares no pirulito que vêm com o efeito de ondulação embutido. Gostaria de adicionar o efeito cascata de toque do material design à imagem, mas não consigo encontrar uma maneira de implementá-lo. Posso definir um filtro de cor sobre a imagem, mas esse não é o efeito cascata. Um exemplo do que estou tentando fazer é quando você segura a imagem da capa de um álbum no Google Play Música e uma onda de sombra se move pela imagem.
95
android:theme="@style/Base.ThemeOverlay.AppCompat.Dark"
(funciona no <API 21). Consulte stackoverflow.com/q/28605031/599535 para outras soluções.Você pode simplesmente adicionar um plano de fundo ao seu ImageButton como este:
fonte
Obtive boas respostas de i.shadrin ( aqui ) e Nicolars ( aqui ).
A diferença entre as respostas deles é que
?attr/selectableItemBackgroundBorderless
pode dar a você umandroid.view.InflateException
, então?android:attr/selectableItemBackground
é a solução.FWIW, não sei por que a exceção acontece, porque a primeira resposta funcionou bem em todos os meus projetos antigos, mas no meu projeto recente não (talvez porque o tema do aplicativo =
android:Theme.Material
?).O estranho que estava acontecendo é que, embora o efeito cascata tenha sido mostrado, ele estava ultrapassando o ImageButton, então a solução é:
android:foreground="?android:attr/selectableItemBackgroundBorderless"
vez deandroid:background="?android:attr/selectableItemBackgroundBorderless"
Espero que ajude você se você estiver enfrentando o mesmo.
fonte
Se você já tem um plano de fundo e não deseja alterá-lo, use o primeiro plano;
fonte