改变着色器的Android“聚光灯”

时间:2013-03-01 12:50:25

标签: android performance android-layout

我使用以下示例创建了一个聚光灯着色器: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

enter image description here

1 个答案:

答案 0 :(得分:0)

由于您没有发布任何使用它的代码,因此有点难以帮助您提高性能,但我有两个建议:

你写“当滚动操作太重时再次设置它并最终导致内存崩溃”。我假设你有时会重新加载Bitmap。这不是一个好主意,因为它会导致您描述的问题。而是仅创建一次并使用各种位图方法进行转换。

其次,如果您在ScrollView中没有非常高级的内容,请考虑将滚动内容与SurfaceView中的聚光灯效果相结合,并手动绘制画布上的所有内容。

最后,您还写道,您正在使用FragmentPager来移动聚光灯。这似乎不是最佳方式,考虑您想要的结果是否必须以这种方式实现。