Je veux créer une ondulation dynamiquement dans le code.
Code:
if (Android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
buyButton.setBackground(getPressedColorRippleDrawable(primaryColor, darkerVariant));
}
public static RippleDrawable getPressedColorRippleDrawable(int color, int darkerVariant) {
if (Android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
ColorStateList colorStateList = new ColorStateList(
new int[][]
{new int[]{}},
new int[]
{darkerVariant}
);
return new RippleDrawable(colorStateList, new ColorDrawable(color), null);
}
return null;
}
Cela fonctionne sur Lollipop mais fait planter l'application sur mon GNEX (4.3).
Erreur:
Impossible de trouver la classe 'Android.graphics.drawable.RippleDrawable', référencée à partir des fragments de méthode.ProductDetailFragment.getPressedColorRippleDrawable
07-17 12: 57: 45.757 30992-30992/com.comizzo.ginsonline E/AndroidRuntime ﹕ EXCEPTION FATALE: principale
Java.lang.VerifyError: fragments/ProductDetailFragment
Mais RippleDrawable n'est jamais utilisé sur Gnex car le code n'est pas exécuté.
Comment puis-je réparer cela ?
Le problème est que vous devez renvoyer un Drawable au lieu d'un RippleDrawable dans getPressedColorRippleDrawable
. Sinon, sur les appareils pré-Lollipop, vous obtiendrez une VerifyError.
Ce code n'est en effet pas exécuté. L'application se bloque car vous recevez un Java.lang.VerifyError
. Essayez d'effectuer un Project → Clean
si vous utilisez Eclipse ou Build → Rebuild project
si vous utilisez Android Studio.