- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在为我的项目使用 rippleeffect 库
。但是在 Android Nougat 和 Marshmallow
中,应用程序由于这个库而崩溃:
编译'com.github.traex.rippleeffect:library:1.3'
错误信息是:
FATAL EXCEPTION: main Process: com.test.testapp, PID: 17713 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:522) at com.andexert.library.RippleView.draw(RippleView.java:170) ........................ ........................
就以下链接而言,这是一个已知问题。 https://github.com/traex/RippleEffect/issues/76而且我还尝试了很多来自 stackoverflow 的解决方案,但到目前为止运气不错!!!
如何解决这个问题?
最佳答案
我遇到了同样的问题,但没有找到好的解决方案。但是如果你
targetSdkVersion
降级到 22 你可以运行它:这意味着它不会崩溃!但我真的不推荐。'com.github.emanzanoaxa:RippleEffect:52ea2a0ab6'
restore()
之前调用 canvas.save();
是您链接中的另一个建议,因为您可以尝试https://codeload.github.com/traex/RippleEffect/zip/master (从您提供的链接中可以找到人们尝试使用的解决方案)
或者我建议您自己创建它们,根本不需要库!
Ripple
触摸效果在 Android 5.0(API 级别 21)中引入,动画由新的 RippleDrawable
类实现。
常规按钮的涟漪效果在 API 21 中默认工作,对于其他可触摸 View ,可以通过指定实现:
android:background="?attr/selectItemBackground"
对于 View 中包含的涟漪或:
android:background="?attr/selectItemBackgroundBorderless"
对于超出 View 边界的涟漪。
您可以使用以下代码实现相同的效果:
int[] attrs = new int[]{R.attr.selectItemBackground};
TypedArray typedArray = getActivity().obtainStyledAttributes(attrs);
int backgroundResource = typedArray.getResourceId(0, 0);
myView.setBackgroundResource(backgroundResource);
如果您想将波纹效果自定义到 View 中,您需要在 drawable 目录中创建一个新的 XML
文件。
例子:
示例 1:无限涟漪
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#ffff0000" />
示例 2:带有 mask 和背景颜色的波纹
<ripple android:color="#7777666"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/mask"
android:drawable="#ffff00" />
<item android:drawable="@android:color/white"/>
</ripple>
示例 3:在可绘制资源上波纹
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#ff0000ff">
<item android:drawable="@drawable/my_drawable" />
</ripple>
如何使用:要将 ripple xml 文件附加到任何 View ,请将其设置为背景,如下所示:假设您的 ripple 文件名为 my_ripple.xml
。在示例 1、2 或 3 中
<View
android:id="@+id/myViewId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/my_ripple" />
关于android - java.lang.IllegalStateException : Underflow in restore - more restores than saves 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41390367/
为什么我会收到错误“EXEC_BAD_INSTRUCTION”: let r = Double(arc4random_uniform(181) - 90) 虽然这工作正常: let r = Doubl
我想使用装饰器模式扩展 basic_streambuf 对象的行为。这就是我目前得到的: template class forwarding_basic_streambuf : boost::
尝试将 double 插入 Oracle 表的 DOUBLE PRECISION 列时,当 double 超出范围(在我的例子中:太小)时出现异常,但仅当使用 PreparedStatement(如果
我试图定义一个简单的指数,无论我在指数参数中输入的数字如何,我都会得到以下结果: FloatingPointError: underflow encountered in exp 我试图定义的数组如下
我有一个大小为 100 万的随机序列,为了使用 NIST test suite ,我将Windows txt格式存储的序列转换为BCD,显然文件的长度变成了400万。因此,我运行测试并将比特流设置为
我有一个从弱到强的NSMapTable。当我尝试调用 removeObjectForKey:method 时,我的应用程序崩溃了。 代码如下:self.requestedObjectMap是一个从弱到
我编写了一段 Java 代码,用于通过 Socket 将 PDF 转换的 postscript 脚本发送到网络打印机。 这些文件以完美的形状打印,但每个作业都附带一到两页额外的页面,其中包含诸如 ps
我使用 Kryo 将对象写入字节数组。它工作正常。但是当字节数组转换为对象时,它会抛出 com.esotericsoftware.kryo.KryoException: Buffer underflo
我的 WPF 测试应用程序(非常简单,只有一个窗口)正在使用第 3 方托管的 dll(比如 X.dll)。此托管 dll 使用一些非托管 dll。因此,假设我编写了一个仅引用 X.dll 的小型 wp
为什么下面的代码会抛出异常?请注意,该文件是一个 /proc/pid/stat 文件,因此它可能会受到内核的干扰。 // Checked that file does exist try { st
我正在为我的项目使用 rippleeffect 库。但是在 Android Nougat 和 Marshmallow 中,应用程序由于这个库而崩溃: 编译'com.github.traex.rippl
我公司的产品运行在许多合格的 Linux 硬件/软件配置上。从历史上看,使用的编译器是 GNU C++。出于本文的目的,让我们将版本 3.2.3 视为基线,因为我们的软件在该版本中“按预期工作”。 随
问题的标题是错误本身,但我也会在下面包含它: error: argument of type ‘char (CharStack::)()const throw (CharStack::Underflo
我是一名优秀的程序员,十分优秀!