- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在我的应用程序中启用了硬件加速,但我在我的一个 View 中禁用了它,因为我遇到了笔划帽和其他问题。
现在我在 Google Play 崩溃错误控制台中得到了这个堆栈跟踪:
java.lang.UnsupportedOperationException
at android.view.GLES20Canvas.clipPath(GLES20Canvas.java:287)
at com.myapp.MyCustomView.onDraw(SourceFile:288)
at android.view.View.draw(View.java:9310)
at android.view.View.getDisplayList(View.java:8773)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2298)
...
at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:609)
at android.view.ViewRoot.draw(ViewRoot.java:1634)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1450)
at android.view.ViewRoot.handleMessage(ViewRoot.java:2094)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4123)
...
我在 AndroidManifest.xml 中指定了 android:hardwareAccelerated="true"
。但是我在自定义 View 的构造函数中特别禁用了硬件加速:
public MyCustomView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// ... code omitted
// disable acceleration because Paint.setStrokeCap(Cap.ROUND) is not working otherwise
Compatibility.disableHardwareAcceleration(this);
}
兼容性是这样的:
public class Compatibility {
// View.setLayerType() was introduced in Honeycomb
private static Method setLayerTypeMethod = getMethod(View.class, "setLayerType", int.class,
Paint.class);
private static Method getMethod(Class<?> clazz, String name, Class<?>... parameterTypes) {
try {
return clazz.getMethod(name, parameterTypes);
}
catch (NoSuchMethodException e) {
return null;
}
}
private Compatibility() {
}
public static void disableHardwareAcceleration(View view) {
try {
if (setLayerTypeMethod != null) {
int layerType = 1; // View.LAYER_TYPE_SOFTWARE
setLayerTypeMethod.invoke(view, layerType, null);
}
}
catch (Exception ignored) {
}
}
}
遗憾的是,崩溃错误控制台不会显示有关 Android 操作系统版本或设备的信息。
任何想法可能会发生什么?
最佳答案
有一个已知问题,即使设置了 LAYER_TYPE_SOFTWARE, View 仍然使用硬件加速绘制。详情为here
作为解决方法,您可以做两件事
关于android - View 中禁用硬件加速的 GLES20Canvas.clipPath 中的 UnsupportedOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10173968/
我有一台运行 Android 4.2.2 的 ASUS Nexus 7 我的应用程序在运行以下代码时在 sk_malloc_flags 中生成一个 SIGSEGV: static Picture cr
不确定我是否正确地制定了标题,但问题来了。 我有一个云状的 SVG 路径,我想在 CSS 中使用 clip-path属性。 当我在 HTML 中添加一个 SVG 元素并定义 时使用该路径,浏览器将
我正在尝试使用 svg 创建一个 clipPath 图像。我正在尝试使用 SVG 的 native clipPath 方法来完成它。 My problem is that if I use a pat
如何创建上面的自定义clipPath小部件? (我附上了截图) 我尝试过,但输出不准确 Clipper 类 class MessageClipper extends CustomClipper {
我遇到了这个错误。 Assertion failed: org-dartlang-sdk:///flutter_web_sdk/lib/_engine/engine/surface/path/path
我的CustomClipper从左上角开始,但是,我希望它从右上角开始。 这是我的代码: 快船队: class ProfileBarClipper extends CustomClipper {
这是 this 的延续问题。 这是代码:Plunker 我现在想做的是更新 clipPath 与其他所有内容一致,我无法安静地弄清楚 我尝试了各种方法让它以平滑的方式转换,但每次都得到相同的结果。pl
我想生成一个小部件,其剪辑路径与给定图像中的剪辑路径相似。我在这里谈论的是应用程序屏幕的白色部分,其中包含信息。 下面的代码是我在实验时尝试的,但失败了! Path getClip(Size siz
简而言之,我有一个使用 clipPath 屏蔽的图像,因此它可以在 IE 9+ 中工作。问题是我需要在悬停时隐藏蒙版以显示完整图像,然后在鼠标移开时重新应用。我现在拥有的脚本不起作用。笔在下面。我对
这个问题已经有答案了: 奥 git _a (1 个回答) 已关闭 7 年前。 我有一个图形,上面有三个折线图。 我在图表中添加了一个clipPath,覆盖了所有三个折线图。但每个折线图的顶部都被砍掉了
我想创建一个像这样的路径: 但实际结果边框不好: 现在我想知道如何使用 ClipPath 实现完全圆角。 代码是: class MyClipper extends CustomClipper {
我正在循环增加 clipPath 的大小。循环内部还有另一个循环,它创建了更多的 clipPaths,我用它来绘制降低的 alpha,以便获得过渡效果。但随着 clipPath 大小的增加,转换变得缓
向导, 我在处理 clippath 上的鼠标悬停事件时遇到了一些问题。出于某种原因,它没有触发,我认为这是因为元素正在剪裁 Dude 的图像。 我的目标是提醒悬停元素的用户标识(示例中的 1、2 或
我试图将一个带有 clipPath 的 div 放在页脚中另一个 div 的顶部。这是我要完成的工作的图像。从理论上讲,这听起来很简单,但我似乎在裁剪路径 SVG 的放置和缩放方面苦苦挣扎。 我为剪辑
我有一个 SVG 导航轮,我已经把它放在 jsfiddle SVG navigation wheel 上 这里是实际的 SVG 代码: wheelv2
我正在尝试创建一个 transparent arrow over an image通过 SVG 和 clipPath。这是 jsfiddle与工作解决方案。 当我尝试在我的 div 容器中应用此解决方
我在使用 Canvas clipPath 时收到 UnsupportedOperationException。 这发生在 HTC Sensation XE (4.0.3) 上。它在其他 4.0.3 设
我在 Canvas 上创建了一个圆形剪辑路径,并且有一列数字在 Canvas 上进行了动画处理,因此我看到数字在剪辑部分中进行动画处理并进行动画处理。这是裁剪代码: mClipPath.addCirc
对于我的生活,我无法弄清楚为什么 SVG 不会呈现以下图形: 我发现了以下两件事: 当裁剪路径为基本圆时,图像会被正确裁剪。 当未设置剪辑路径时,图像可以正确呈现。
我有一个布局,里面有几个 View ——工具栏、recyclerview 和几个分隔符(它们是简单的 View ,高度为 2dp,宽度为 match_parent)。我想在布局上放置一个 mask —
我是一名优秀的程序员,十分优秀!