Bagaimana cara mengatur efek riak pada tampilan teks atau tampilan gambar di Android?

127

Saya ingin mengatur efek riak pada tampilan teks dan tampilan gambar di Android Studio. Bagaimana saya bisa melakukannya?

Vasant
sumber
1
Tolong uraikan pertanyaan Anda terlebih dahulu. Apa yang sebenarnya Anda butuhkan dan apa yang telah Anda coba sejauh ini. Hanya dengan mengatakan bahwa saya ingin efek riak membuatnya menjadi pertanyaan yang sangat luas. Anda juga dapat memberikan beberapa tautan untuk referensi mengenai apa yang Anda inginkan . Lihat juga stackoverflow. com / help / how-to-ask
Anirudh Sharma
Sebenarnya saya ingin efek untuk tampilan teks dan tampilan gambar pilih / hapus efek.
Vasant
Sudahkah Anda mencoba mencari yang sama?
Anirudh Sharma

Jawaban:

276

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"
/>
Bikesh M
sumber
2
bagus itu bekerja dengan saya di lollipop, tetapi cara ini untuk yang versi android android? dan apakah itu berfungsi pada pre-lollipop?
Basheer AL-MOMANI
2
@Richard Saya punya masalah dengan KitKat (atau ICS) setahun yang lalu, dan pendengar klik tidak berfungsi tanpa android: clickable = "true" untuk versi itu
DoruChidean
25
Pada versi modern Android, ini sekarangandroid:background="?android:attr/selectableItemBackground"
tmm1
2
Bagaimana bisa menggunakan ini ketika saya ingin latar belakang khusus ??
mrid
3
Perbedaan antara ini dengan / tanpa Borderless youtube.com/watch?v=wOjA8tS5sbc
Gibolt
82

Jika Anda ingin riak dibatasi ke ukuran penggunaan TextView / ImageView:

<TextView
android:background="?attr/selectableItemBackground"
android:clickable="true"/>

(Saya pikir itu terlihat lebih baik)

Mikro
sumber
2
Apakah ada perbedaan dalam menggunakan selectableItemBackgroundvsselectableItemBackgroundBorderless
rakesh kashyap
Saya tidak tahu mengapa itu tidak dibatasi perbatasan dan diperluas melalui seluruh tata letak
VSB
4
@rakeshkashyap perbedaannya adalah selectableItemBackground akan menjaga riak di dalam ukuran tampilan itu (lebar / tinggi). selectableItemBackgroundBorderless akan memperluas riak atas tampilan lain (seperti riak aplikasi kalkulator resmi)
Tudor
1
dan juga perlu mengatur ini >>> android: focusable = "true"
Amos
Bermanfaat. Terima kasih.
Pooja
25

Silakan merujuk jawaban di bawah ini untuk efek riak.

riak di Textview atau lihat:

android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackgroundBorderless"

riak pada Tombol atau Imageview:

android:foreground="?android:attr/selectableItemBackgroundBorderless"
Vasant
sumber
4
Harap perhatikan bahwa selectableItemBackgroundBorderlessAPI 21+. Di bawah ini Anda dapat memilih selectableItemBackgrounduntuk menghindari masalah kompatibilitas
StevenTB
10

Anda dapat menggunakan android-ripple-background

Mulai Efek

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();
    }
});

Hentikan animasi:

rippleBackground.stopRippleAnimation();
IntelliJ Amiya
sumber
bagus! apakah ada versi Kotlin ini?
rengineer
8
<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" />

tambahkan ini ke dalam 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" />

coba ini.

Karthik Sridharan
sumber
6

coba ini. Ini berhasil untuk saya.

android:clickable="true"
    android:focusable="true"
    android:background="?android:attr/selectableItemBackground"
Juboraj Sarker
sumber
1
Saya sudah menyebutkan ini sebelumnya ( stackoverflow.com/a/50347848/1954960 ) jadi alih-alih menyebabkan duplikat jawaban, tolong jempol jawaban saya, Terima kasih! :)
Zafer Celaloglu
5

Selain jawaban di atas ditambahkan fokus untuk menghindari peringatan editor UI

android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"
Zafer Celaloglu
sumber
4

Dalam hal solusi yang dipilih dengan baik diposting oleh @Bikesh M Annur (di sini ) tidak bekerja untuk Anda, coba gunakan:

<TextView
...
android:background="?android:attr/selectableItemBackgroundBorderless"
android:clickable="true" />

<ImageView
...
android:background="?android:attr/selectableItemBackgroundBorderless"
android:clickable="true" />

Juga, saat menggunakan android:clickable="true"add android:focusable="true"karena:

" Widget yang dinyatakan dapat diklik tetapi tidak dinyatakan sebagai fokus tidak dapat diakses melalui keyboard. "

Filipe Brito
sumber
3

Menambahkan android:clickable="true" android:focusable="true"

Untuk Efek Riak

android:background="?attr/selectableItemBackgroundBorderless"

Untuk Efek yang Dapat Dipilih

android:background="?android:attr/selectableItemBackground"

Untuk efek Tombol

android:adjustViewBounds="true" style="?android:attr/borderlessButtonStyle"
silver_hawk
sumber
2

Selain jawaban @Bikesh M Annur, pastikan untuk memperbarui perpustakaan dukungan Anda. Sebelumnya saya menggunakan 23.1.1 dan tidak ada yang terjadi. Memperbarui ke 23.3.0 berhasil.

Mark Pazon
sumber
2

untuk riak lingkaran: android:background="?attr/selectableItemBackgroundBorderless"

untuk riak persegi panjang: android:background="?attr/selectableItemBackground"

Bita Mirshafiee
sumber
1

Atau Anda dapat mencoba menggunakan perpustakaan ini (android 9+): RippleEffect

Integrasi

dependencies {
    compile 'com.github.traex.rippleeffect:library:1.3'
}

Pemakaian:

<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>
walkmn
sumber
8
Saya menggunakannya untuk waktu yang cukup lama, tetapi saya tidak merekomendasikannya lagi kecuali Anda bertujuan untuk Android 2.3. Buggy, laggy, dan menghasilkan kode boilerplate. Dan karena saat ini 43% dari semua perangkat memiliki Android 5 atau 6, Anda dapat tetap menggunakannya selectableItemBackgroundsaat menargetkan Android 4 dan di atasnya.
0101100101
0

Cara terbaik menambahkannya:

    <ImageView
        android:id="@+id/ivBack"
        style="?attr/actionButtonStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="16dp"
        android:src="@drawable/ic_back_arrow_black"
        android:tint="@color/white" />
Mendongkrak
sumber
-4

Menggunakan perpustakaan. Ini salah satunya. Cukup tambahkan ketergantungannya dan letakkan kode di bawah ini dalam xml sebelum setiap elemen yang membutuhkan efek riak:

<com.balysv.materialripple.MaterialRippleLayout
android:id="@+id/ripple"
android:layout_width="match_parent"
android:layout_height="wrap_content">
Amirhossein Naghshzan
sumber
4
oh tolong tidak, ini bukan cara terbaik karena Anda memiliki sedikit kendali atas itu dan secara luas didukung di Android SDK itu sendiri. Jika ada yang membaca ini saya sarankan untuk melihat komentar @Bikesh atau Karthik jika Anda ingin mengontrol warnanya.
Dion Segijn