11

我想在代码中动态创建涟漪。

代码:

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;
}

这适用于 Lollipop,但会使应用程序在我的 GNEX (4.3) 上崩溃。
错误:

找不到从方法片段引用的类 'android.graphics.drawable.RippleDrawable'。ProductDetailFragment.getPressedColorRippleDrawable

07-17 12:57:45.757 30992-30992/com.comizzo.ginsonline E/AndroidRuntime:致命异常:主要

java.lang.VerifyError: 片段/ProductDetailFragment

但是 RippleDrawable 从来没有在 Gnex 上使用,因为代码没有被执行。

我怎样才能解决这个问题 ?

4

2 回答 2

9

问题是您需要返回 Drawable 而不是 RippleDrawable in getPressedColorRippleDrawable。否则,在棒棒糖之前的设备上,您将收到一个 VerifyError。

于 2016-03-10T05:11:14.827 回答
5

该代码确实没有被执行。应用程序崩溃是因为您收到java.lang.VerifyError. Project → Clean如果您使用 Eclipse 或Build → Rebuild project使用 Android Studio,请尝试执行 a 。

于 2015-07-17T13:01:42.743 回答