在Android M设备上使用Ripple Effect Library的IllegalStateException

时间:2016-02-19 09:42:05

标签: android android-6.0-marshmallow ripple android-6.0.1-marshmallow

使用this library来实施Ripple Effect,它可以在Android M设备上正常

在Android上 M 设备获取IllegalStateException,表示恢复时出现下溢 - 恢复的次数多于保存次数

FATAL EXCEPTION: main
Process: com.example.ripplethings, PID: 20119
java.lang.IllegalStateException: Underflow in restore - more restores than saves
at android.graphics.Canvas.native_restore(Native Method)
at android.graphics.Canvas.restore(Canvas.java:540)
at com.andexert.library.RippleView.draw(RippleView.java:166)

1 个答案:

答案 0 :(得分:5)

这似乎是Android 6.0中库本身的一个错误,避免错误的可能方法是

1)使用com.balysv:material-ripple:1.0.2库看起来更稳定

2)或者你可以使用21+的单独布局让Android M处理涟漪本身。只需使用适当的纹波支架进行布局和视图

3)或者您可以根据this建议

修改库源代码

4)@ git提供了这个库的固定版本,你可以在你的gradle中使用它

List<MyType> a;
List<MySubType> b = new ArrayList<>();
a = b; // compile-time-error, but assume OK for now
a.add(new MyType()); // Based on the type of a, this should be OK, but it's not because a is actually a reference to List<MySubType>.