From 1bc0932cecb0c52046ebd9e370c5af40463e6826 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Thu, 21 Nov 2019 12:13:08 +0100 Subject: [PATCH] Fix fingerprint animation --- .../biometric/FingerPrintAnimatedVector.kt | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/FingerPrintAnimatedVector.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/FingerPrintAnimatedVector.kt index 835d57998..678128d26 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/FingerPrintAnimatedVector.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/FingerPrintAnimatedVector.kt @@ -20,43 +20,44 @@ package com.kunzisoft.keepass.biometric import android.content.Context -import android.graphics.drawable.Animatable2 -import android.graphics.drawable.AnimatedVectorDrawable import android.graphics.drawable.Drawable import android.os.Build import androidx.annotation.RequiresApi import android.widget.ImageView +import androidx.vectordrawable.graphics.drawable.Animatable2Compat +import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat import com.kunzisoft.keepass.R @RequiresApi(api = Build.VERSION_CODES.M) class FingerPrintAnimatedVector(context: Context, imageView: ImageView) { - private val scanFingerprint: AnimatedVectorDrawable = - context.getDrawable(R.drawable.scan_fingerprint) as AnimatedVectorDrawable + private val scanFingerprint: AnimatedVectorDrawableCompat? = + AnimatedVectorDrawableCompat.create(context, R.drawable.scan_fingerprint) init { imageView.setImageDrawable(scanFingerprint) } - private var animationCallback = object : Animatable2.AnimationCallback() { + private var animationCallback = object : Animatable2Compat.AnimationCallback() { override fun onAnimationEnd(drawable: Drawable) { - if (!scanFingerprint.isRunning) - scanFingerprint.start() + imageView.post { + scanFingerprint?.start() + } } } fun startScan() { - scanFingerprint.registerAnimationCallback(animationCallback) + scanFingerprint?.registerAnimationCallback(animationCallback) - if (!scanFingerprint.isRunning) - scanFingerprint.start() + if (scanFingerprint?.isRunning != true) + scanFingerprint?.start() } fun stopScan() { - scanFingerprint.unregisterAnimationCallback(animationCallback) + scanFingerprint?.unregisterAnimationCallback(animationCallback) - if (scanFingerprint.isRunning) + if (scanFingerprint?.isRunning == true) scanFingerprint.stop() } }