Quero definir um efeito cascata na visualização de texto e na visualização de imagens no Android Studio. Como eu posso fazer isso?
Quero definir um efeito cascata na visualização de texto e na visualização de imagens no Android Studio. Como eu posso fazer isso?
Respostas:
Ref: http://developer.android.com/training/material/animations.html ,
http://wiki.workassis.com/category/android/android-xml/
<TextView
.
.
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
/>
<ImageView
.
.
.
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
/>
android:background="?android:attr/selectableItemBackground"
Borderless
youtube.com/watch?v=wOjA8tS5sbc
Se você deseja que a ondulação seja limitada ao tamanho do TextView / ImageView, use:
<TextView
android:background="?attr/selectableItemBackground"
android:clickable="true"/>
(Eu acho que parece melhor)
selectableItemBackground
vsselectableItemBackgroundBorderless
Consulte a resposta abaixo para obter um efeito cascata.
ondulação no Textview ou no modo de exibição:
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackgroundBorderless"
ondulação no botão ou na visualização de imagem:
android:foreground="?android:attr/selectableItemBackgroundBorderless"
selectableItemBackgroundBorderless
é a API 21+. Abaixo, você pode optar selectableItemBackground
por evitar problemas de compatibilidade
Você pode usar android-ripple-background
Efeito inicial
final RippleBackground rippleBackground=(RippleBackground)findViewById(R.id.content);
ImageView imageView=(ImageView)findViewById(R.id.centerImage);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
rippleBackground.startRippleAnimation();
}
});
Parar animação:
rippleBackground.stopRippleAnimation();
<TextView
android:id="@+id/txt_banner"
android:layout_width="match_parent"
android:text="@string/banner"
android:gravity="center|left"
android:layout_below="@+id/title"
android:background="@drawable/ripple_effect"
android:paddingLeft="15dp"
android:textSize="15sp"
android:layout_height="45dp" />
adicione isso no drawable
<?xml version="1.0" encoding="utf-8"?>
<!--this ribble animation only working for >= android version 21-->
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/click_efect" />
tente isso.
tente isso. Isso é trabalhado para mim.
android:clickable="true"
android:focusable="true"
android:background="?android:attr/selectableItemBackground"
Além das respostas acima, é possível adicionar foco para evitar o aviso do editor da interface do usuário
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"
No caso da solução bem votada postada por @Bikesh M Annur ( aqui ) não funcionar, tente usar:
<TextView
...
android:background="?android:attr/selectableItemBackgroundBorderless"
android:clickable="true" />
<ImageView
...
android:background="?android:attr/selectableItemBackgroundBorderless"
android:clickable="true" />
Além disso, ao usar android:clickable="true"
add, android:focusable="true"
porque:
" Um widget que é declarado clicável, mas não declarado focalizável, não pode ser acessado pelo teclado. "
Adicionar
android:clickable="true"
android:focusable="true"
Para efeito cascata
android:background="?attr/selectableItemBackgroundBorderless"
Para efeito selecionável
android:background="?android:attr/selectableItemBackground"
Para efeito de botão
android:adjustViewBounds="true" style="?android:attr/borderlessButtonStyle"
Além da resposta de @Bikesh M Annur, atualize suas bibliotecas de suporte. Anteriormente, eu estava usando 23.1.1 e nada aconteceu. Atualizá-lo para 23.3.0 fez o truque.
para ondulação do círculo:
android:background="?attr/selectableItemBackgroundBorderless"
para ondulação retangular:
android:background="?attr/selectableItemBackground"
Ou você pode tentar usar esta biblioteca (Android 9 ou posterior ): RippleEffect
Integração
dependencies {
compile 'com.github.traex.rippleeffect:library:1.3'
}
Uso:
<com.andexert.library.RippleView
android:id="@+id/more"
android:layout_width="?android:actionBarSize"
android:layout_height="?android:actionBarSize"
android:layout_toLeftOf="@+id/more2"
android:layout_margin="5dp"
rv_centered="true">
<ImageView
android:layout_width="?android:actionBarSize"
android:layout_height="?android:actionBarSize"
android:src="@android:drawable/ic_menu_edit"
android:layout_centerInParent="true"
android:padding="10dp"
android:background="@android:color/holo_blue_dark"/>
</com.andexert.library.RippleView>
selectableItemBackground
Android 4 ou superior.
Usando bibliotecas. Este é um deles. Basta adicionar sua dependência e colocar o código abaixo em xml antes de cada elemento que precisa de efeito cascata:
<com.balysv.materialripple.MaterialRippleLayout
android:id="@+id/ripple"
android:layout_width="match_parent"
android:layout_height="wrap_content">