Di Android, saat saya menyetel gambar latar belakang ke Tombol, saya tidak bisa melihat efek apa pun pada tombol.
Saya membutuhkan beberapa efek pada tombol sehingga pengguna dapat mengenali tombol yang diklik.
Tombol harus gelap selama beberapa detik saat diklik, jadi apa yang harus saya lakukan untuk ini?
Terima kasih.
Jawaban:
Ini dapat dicapai dengan membuat file xml drawable yang berisi daftar status untuk tombol tersebut. Jadi misalnya jika Anda membuat file xml baru bernama "button.xml" dengan kode berikut:
Untuk menyimpan gambar latar belakang dengan tampilan yang digelapkan saat dicetak, buat file xml kedua dan beri nama gradient.xml dengan kode berikut:
Dalam xml tombol Anda atur latar belakang menjadi tombol xml misalnya
Semoga ini membantu!
Edit: Mengubah kode di atas untuk menampilkan gambar (GAMBAR ANDA) di tombol sebagai lawan dari warna blok.
sumber
Ini lebih sederhana ketika Anda memiliki banyak tombol gambar, dan Anda tidak ingin menulis xml-s untuk setiap tombol.
Versi Kotlin:
Versi Java:
sumber
Buat
AlphaAnimation
Objek Anda yang menentukan seberapa banyak efek memudar dari tombol, lalu biarkan mulai dionClickListener
dari tombol AndaSebagai contoh :
tentu saja ini hanya cara, bukan yang paling disukai, hanya lebih mudah
sumber
Anda cukup menggunakan latar depan untuk
View
mendapatkan efek yang dapat diklik:Untuk digunakan dengan tema gelap, tambahkan juga tema ke Anda
layout
(agar efek yang dapat diklik menjadi jelas):sumber
Untuk membuat item Anda konsisten dengan tampilan dan nuansa sistem, coba referensi atribut sistem
android:attr/selectableItemBackground
di tag latar depan atau latar depan tampilan yang Anda inginkan:Gunakan kedua atribut untuk mendapatkan efek yang diinginkan sebelum / sesudah API level 23 masing-masing.
https://stackoverflow.com/a/11513474/4683601
sumber
Atau hanya dengan menggunakan satu gambar latar belakang Anda dapat memperoleh efek klik dengan menggunakan
setOnTouchListener
Dua arah
Dan jika Anda tidak ingin menggunakan
setOnTouchLister
, cara lain untuk mencapainya adalahsumber
hanya ingin menambahkan cara lain yang mudah untuk melakukan ini: Jika ImageButton Anda tetap menjadi latar belakang dan Anda tidak menyetelnya ke null, ini akan berfungsi seperti tombol normal dan akan menampilkan animasi klik saat mengklik persis seperti tombol lainnya. latar belakang saat masih ada:
Paddings tidak akan membiarkan background terlihat dan membuat tombol tersebut berfungsi seperti tombol lainnya.
sumber
Ini adalah solusi terbaik yang saya dapatkan dengan mengambil petunjuk dari jawaban @ Vinayak. Semua solusi lainnya memiliki kekurangan yang berbeda.
Pertama-tama buat fungsi seperti ini.
Penjelasan:
getConstantState (). newDrawable () digunakan untuk menggandakan Drawable yang ada, jika tidak, drawable yang sama akan digunakan. Baca lebih lanjut dari sini: Android: Menggandakan drawable untuk membuat StateListDrawable dengan filter
mutate () digunakan untuk membuat klon Drawable tidak membagikan statusnya dengan instance Drawable lainnya. Baca lebih lanjut di sini: https://developer.android.com/reference/android/graphics/drawable/Drawable.html#mutate ()
Pemakaian:
Anda dapat meneruskan semua jenis View (Button, ImageButton, View dll) sebagai parameter ke fungsi dan mereka akan mendapatkan efek klik yang diterapkan padanya.
sumber
sumber
Gunakan RippleDrawable untuk efek ditekan / diklik dengan status Desain Material.
Untuk melakukannya, buat item ripple sebagai folder .xml di bawah / drawable dan gunakan di android: background untuk tampilan apa pun.
Efek untuk ikon ditekan / diklik, gunakan efek riak melingkar, misalnya:
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@android:color/darker_gray" />
Efek untuk tampilan diklik dengan batas persegi panjang, kita bisa menambahkan riak pada drawable yang ada seperti di bawah ini:
<?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="#000000"> <item android:drawable="@drawable/your_background_drawable"/> </ripple>
sumber
Untuk semua tampilan
android:background="?android:attr/selectableItemBackground"
Tetapi untuk cardview yang memiliki penggunaan elevasi
android:foreground="?android:attr/selectableItemBackground"
Untuk efek klik melingkar seperti pada toolbar
Anda juga perlu mengatur
sumber
Membuat tambahan kecil pada jawaban Andràs:
Anda dapat menggunakan
postDelayed
untuk membuat filter warna bertahan selama beberapa waktu agar lebih terlihat:Anda dapat mengubah nilai penundaan 100L sesuai dengan kebutuhan Anda.
sumber
Jika Anda menggunakan latar belakang xml dan bukan IMG, hapus saja ini:
dari jawaban pertama yang diberikan @Ljdawson kepada kami.
sumber