我使用以下示例创建了一个聚光灯着色器:http://www.curious-creature.org/2012/12/13/android-recipe-2-fun-with-shaders/
效果很好,我使用HorizontalScrollView
的聚光灯,现在我必须在移动蒙版的同时滚动HorizontalScrollView
,我无法弄清楚如何将它转到工作良好的表现。 HorizontalScrollView
的内容宽度为屏幕宽度的5倍,而Shader
位图只有一个屏幕宽度。滚动操作太重时再次设置它并最终导致内存崩溃。
感谢。
下面的图片是为了演示我的设置。我把A和B堆放在FrameLayout
上。 A移动聚光灯B滚动内容。因此,A在某种程度上可以将聚光灯视为其背景中的“透明洞”吗? A是Fragment
寻呼机,用于移动聚光灯并同时滚动B ScrollView
。
答案 0 :(得分:0)
由于您没有发布任何使用它的代码,因此有点难以帮助您提高性能,但我有两个建议:
你写“当滚动操作太重时再次设置它并最终导致内存崩溃”。我假设你有时会重新加载Bitmap
。这不是一个好主意,因为它会导致您描述的问题。而是仅创建一次并使用各种位图方法进行转换。
其次,如果您在ScrollView
中没有非常高级的内容,请考虑将滚动内容与SurfaceView
中的聚光灯效果相结合,并手动绘制画布上的所有内容。
最后,您还写道,您正在使用FragmentPager
来移动聚光灯。这似乎不是最佳方式,考虑您想要的结果是否必须以这种方式实现。