J'ai créé ma propre fonction d'extension qui vérifie si le sdk est au moins lollipopUtiliser la propriété NewApi provoque toujours des avertissements charpie
inline val buildIsLollipopAndUp: Boolean
get() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
Cependant, si je l'utiliser, les outils de peluches ne peut pas comprendre que je J'ai vérifié mon niveau d'api et me donne toujours de nouveaux avertissements api. Est-il possible de faire disparaître ces avertissements et de faire reconnaître mon chèque par les outils de la charpie?
Un exemple simple:
if (buildIsLollipopAndUp) ripple()
else fade()
Où ripple
invite l'animation circulaire qui est disponible uniquement pour les sucettes et, et fade
est l'animation par défaut.
Mon full example:
@SuppressLint("NewApi")
@KauUtils fun View.circularReveal(x: Int = 0, y: Int = 0, offset: Long = 0L, radius: Float = -1.0f, duration: Long = 500L, onStart: (() -> Unit)? = null, onFinish: (() -> Unit)? = null) {
if (!isAttachedToWindow) {
onStart?.invoke()
visible()
onFinish?.invoke()
return
}
if (!buildIsLollipopAndUp) return fadeIn(offset, duration, onStart, onFinish)
val r = if (radius >= 0) radius
else Math.max(Math.hypot(x.toDouble(), y.toDouble()), Math.hypot((width - x.toDouble()), (height - y.toDouble()))).toFloat()
val anim = ViewAnimationUtils.createCircularReveal(this, x, y, 0f, r).setDuration(duration)
anim.startDelay = offset
anim.addListener(object : AnimatorListenerAdapter() {
override fun onAnimationStart(animation: Animator?) {
visible()
onStart?.invoke()
}
override fun onAnimationEnd(animation: Animator?) = onFinish?.invoke() ?: Unit
override fun onAnimationCancel(animation: Animator?) = onFinish?.invoke() ?: Unit
})
anim.start()
}
Notez que j'ai besoin le dispositif de suppression de peluches afin d'éviter les avertissements de peluches
ce n'est pas une fonction, et ce n'est pas non plus une fonction d'extension. C'est en fait une propriété avec un «getter». pouvez-vous montrer le code comment vous l'utilisez? – Les
@Les oups mon erreur. Je l'ai eu dans un fichier avec mes extensions et j'ai oublié que cela ne compte pas comme un. J'ai ajouté un exemple d'utilisation, mais c'est fondamentalement le même que de remplacer 'Build.VERSION.SDK_INT> = Build.VERSION_CODES.LOLLIPOP' par' buildIsLollipopAndUp' –