Fix fingerprint animation

This commit is contained in:
J-Jamet
2019-11-21 12:13:08 +01:00
parent 76cc2739c8
commit 1bc0932cec

View File

@@ -20,43 +20,44 @@
package com.kunzisoft.keepass.biometric package com.kunzisoft.keepass.biometric
import android.content.Context import android.content.Context
import android.graphics.drawable.Animatable2
import android.graphics.drawable.AnimatedVectorDrawable
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.os.Build import android.os.Build
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import android.widget.ImageView import android.widget.ImageView
import androidx.vectordrawable.graphics.drawable.Animatable2Compat
import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat
import com.kunzisoft.keepass.R import com.kunzisoft.keepass.R
@RequiresApi(api = Build.VERSION_CODES.M) @RequiresApi(api = Build.VERSION_CODES.M)
class FingerPrintAnimatedVector(context: Context, imageView: ImageView) { class FingerPrintAnimatedVector(context: Context, imageView: ImageView) {
private val scanFingerprint: AnimatedVectorDrawable = private val scanFingerprint: AnimatedVectorDrawableCompat? =
context.getDrawable(R.drawable.scan_fingerprint) as AnimatedVectorDrawable AnimatedVectorDrawableCompat.create(context, R.drawable.scan_fingerprint)
init { init {
imageView.setImageDrawable(scanFingerprint) imageView.setImageDrawable(scanFingerprint)
} }
private var animationCallback = object : Animatable2.AnimationCallback() { private var animationCallback = object : Animatable2Compat.AnimationCallback() {
override fun onAnimationEnd(drawable: Drawable) { override fun onAnimationEnd(drawable: Drawable) {
if (!scanFingerprint.isRunning) imageView.post {
scanFingerprint.start() scanFingerprint?.start()
}
} }
} }
fun startScan() { fun startScan() {
scanFingerprint.registerAnimationCallback(animationCallback) scanFingerprint?.registerAnimationCallback(animationCallback)
if (!scanFingerprint.isRunning) if (scanFingerprint?.isRunning != true)
scanFingerprint.start() scanFingerprint?.start()
} }
fun stopScan() { fun stopScan() {
scanFingerprint.unregisterAnimationCallback(animationCallback) scanFingerprint?.unregisterAnimationCallback(animationCallback)
if (scanFingerprint.isRunning) if (scanFingerprint?.isRunning == true)
scanFingerprint.stop() scanFingerprint.stop()
} }
} }