OpenGLRenderer问题:路径太大而无法渲染到纹理

Ara*_* GM 8 android canvas opengl-es hardware-acceleration

我有一个TextView内部ReleativeLayout,我在运行时设置了一个大文本.问题是关于我的ReleativeLayout背景,这是一个带边框的圆形.它没有设置背景,在Logcat中它说:

12-12 16:26:56.602: W/OpenGLRenderer(7400): Path too large to be rendered into a texture
Run Code Online (Sandbox Code Playgroud)

我已经通过在清单文件中将android:hardwareAccelerated变为false 来解决了这个问题(一个活动不是整个应用程序),但是当我在Activity中使用滑动菜单时它会引发另一个错误,它告诉我:

12-12 16:37:05.717: E/AndroidRuntime(9520): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@4633e3f8 
Run Code Online (Sandbox Code Playgroud)

我只有一个没有任何位图的ListView,我的SlidingMenu里面是6Wunderkinder SlidingLayer库.

任何帮助,将不胜感激.

Ara*_* GM 16

最后通过将我的Fragment ScrollView的LayerType从HardwareAcceleration更改为Software来解决它,而没有为整个Activity设置HardwareAcceleration false,导致SlidingMenu中提到的奇怪的行为:

<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layerType="software">
Run Code Online (Sandbox Code Playgroud)


小智 5

当我在 rootview 中有一个 drawable 的滚动视图太长时,就会发生这种情况,这对每个设备都有独特的影响。我的 Nexus 9 几乎可以显示任何内容,但我的 sony 紧凑型手机不会。关闭硬件加速是不值得的,因为在低端设备上,您可能会有一个非常不稳定的应用程序。

在这种情况下,您可能应该考虑使用 listview 或 recyclerview 来确保您的背景元素不大于屏幕。即使在不太长的滚动视图背景中的 XML 可绘制对象也会产生此错误。我选择安全并重新设计元素,简单地从滚动视图中删除背景可能是一个 options ,并将它们作为瓷砖放置在内部元素中。

这看起来很奇怪,但它必须与该 rootview 在较长的滚动视图中呈现背景的方式有关,因为滚动视图本身可能很长,有许多复杂的元素没有问题,背景颜色也从来不是问题..