Saya harus menghentikan animasi terjemahan yang sedang berjalan. The .cancel()
metode Animation
tidak berpengaruh; animasi berjalan sampai akhir.
Bagaimana Anda membatalkan animasi yang sedang berjalan?
Panggil clearAnimation()
mana saja yang View
Anda panggil startAnimation()
.
setFillAfter()
mungkin tidak melakukan apa yang Anda pikirkan. Saat acara sentuh terjadi, hapus animasi dan kemudian sesuaikan tata letak Anda untuk memengaruhi perubahan permanen apa pun yang Anda cari.Pada Android 4.4.4, sepertinya satu-satunya cara saya bisa menghentikan animasi alpha fading pada View sedang memanggil
View.animate().cancel()
(yaitu, memanggil.cancel()
View'sViewPropertyAnimator
).Berikut kode yang saya gunakan untuk kompatibilitas sebelum dan sesudah ICS:
... dengan metode:
Inilah animasi yang saya hentikan:
sumber
.setListener(null);
ini membantu saya.Jika Anda menggunakan pendengar animasi, atur
v.setAnimationListener(null)
. Gunakan kode berikut dengan semua opsi.sumber
v.setAnimation(null);
karena ini akan dilakukan div.clearAnimation();
.Anda harus menggunakan .clearAnimation (); metode di utas UI:
sumber
Apa yang dapat Anda coba lakukan adalah mendapatkan Matriks transformasi dari animasi sebelum Anda menghentikannya dan memeriksa konten Matrix untuk mendapatkan nilai posisi yang Anda cari.
Inilah api yang harus Anda perhatikan
public boolean getTransformation (long currentTime, Transformation outTransformation)
public Matrix getMatrix ()
public void getValues (float[] values)
Jadi misalnya (beberapa kode pseudo. Saya belum menguji ini):
sumber
Gunakan metode setAnimation (null) untuk menghentikan animasi, yang diekspos sebagai metode publik di View.java , itu adalah kelas dasar untuk semua widget , yang digunakan untuk membuat komponen UI interaktif (tombol, bidang teks, dll.).
/** * Sets the next animation to play for this view. * If you want the animation to play immediately, use * {@link #startAnimation(android.view.animation.Animation)} instead. * This method provides allows fine-grained * control over the start time and invalidation, but you * must make sure that 1) the animation has a start time set, and * 2) the view's parent (which controls animations on its children) * will be invalidated when the animation is supposed to * start. * * @param animation The next animation, or null. */ public void setAnimation(Animation animation)
sumber
Untuk menghentikan animasi, Anda dapat mengatur objekAnimator yang tidak melakukan apa pun, misalnya
pertama ketika membalik manual ada animasi kiri ke kanan:
lalu ketika beralih ke flipping otomatis tidak ada animasi
sumber