Saya ingin memiliki 2 detik animasi dari ImageView yang menghabiskan 1000ms memudar dan kemudian 1000ms memudar.
Inilah yang saya miliki sejauh ini di konstruktor ImageView saya:
Animation fadeIn = new AlphaAnimation(0, 1);
fadeIn.setDuration(1000);
Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setStartOffset(1000);
fadeOut.setDuration(1000);
AnimationSet animation = new AnimationSet(true);
animation.addAnimation(fadeIn);
animation.addAnimation(fadeOut);
this.setAnimation(animation);
Ketika saya menjalankan animasi itu, tidak ada yang muncul. Namun, ketika saya menghapus salah satu animasi alfa, perilaku tersebut berfungsi seperti yang diharapkan.
Hal yang sudah saya coba:
- Setiap kombinasi yang mungkin dari
setFillBefore
,setFillAfter
, dansetFillEnabled
. - Menambahkan
LinearInterpolator
keAnimationSet
.
Jawaban:
Menemukan masalah saya sendiri. Solusinya akhirnya berbasis di interpolator.
Jika Anda menggunakan Kotlin
sumber
Saya tahu ini sudah dijawab tetapi .....
Cara cepat dan mudah untuk cepat memudar dan keluar dengan pengulangan sendiri. Nikmati
EDIT : Dalam aktivitas Anda, tambahkan ini:
sumber
alpha
sumber ini, bagaimana saya bisa menggunakannya? Terima kasihviewToAnimate.startAnimation(AnimationUtils.loadAnimation(context, R.anim.fade_in_out)
:, di mana ada file fade_in_out.xml di folder anim di bawah res.sumber
Inilah solusi saya menggunakan AnimatorSet yang tampaknya sedikit lebih dapat diandalkan daripada AnimationSet.
sumber
Alternatif lain:
Tidak perlu mendefinisikan 2 animasi untuk fadeIn dan fadeOut . fadeOut adalah kebalikan dari fadeIn .
Jadi Anda dapat melakukan ini dengan Animasi. REVERSE seperti ini:
lalu padaAnimationEnd :
sumber
Karena saya percaya pada kekuatan XML (untuk tata letak), ini setara dengan jawaban yang diterima , tetapi murni sebagai sumber animasi:
Ini
fillAfter
untuk memudar untuk tetap setelah menyelesaikan animasi. Theinterpolator
menangani interpolasi dari animasi, karena Anda bisa menebak. Anda juga dapat menggunakan jenis interpolator lain, seperti Linear atau Overshoot.Pastikan untuk memulai animasi Anda pada tampilan Anda:
sumber
Ini adalah apa yang saya gunakan untuk memudar tampilan, berharap ini membantu seseorang.
sumber
AnimationSets tampaknya tidak berfungsi seperti yang diharapkan sama sekali. Pada akhirnya saya menyerah dan menggunakan postDelayed () kelas Handler untuk mengurutkan animasi.
sumber
Jika Anda menggunakan Animator untuk membuat animasi Anda bisa
anim (direktori) -> fade_out.xml
Di jawa
Cara lain untuk membuat animasi menghilang hanya dengan kode java
sumber
Anda juga dapat menggunakan animationListener, sesuatu seperti ini:
sumber
Saya sangat suka solusi Vitaly Zinchenkos karena pendek.
Ini adalah versi yang lebih singkat di kotlin untuk fade out yang sederhana
sumber