我正在尝试使用(Neil Davies implementation)来实现封面流。在我的应用程序中,我必须使用硬件加速,但是当我将硬件加速属性设置为 true 时,此 Coverflow 实现无法正常工作(它使相机平移非常不流畅,并且在滚动时卡住了)。
我试图仅在视图层上禁用硬件加速 - 这对我没有帮助。
根据我在此处或此处(以及其他一些)找到的一些解决方案,我必须View.invalidate()
在应用相机翻译后致电。正如您在附加的代码片段中看到的那样,我已经添加了这一行,但是在添加了这个invalidate()
调用之后,这个transformImageBitmap()
函数将在一个永无止境的循环中被调用。据我了解,在视图失效后,视图正在被“布局”并transformImageBitmap()
再次被调用。函数的这个永无止境的循环 transformImageBitmap()
在我的应用程序中导致了一些 preformace 问题。
这是我的 transformImageBitmap() 函数:
private void transformImageBitmap(View child, Transformation t, int rotationAngle)
{
mCamera.save();
final Matrix imageMatrix = t.getMatrix();
final int imageHeight = child.getLayoutParams().height;
final int imageWidth = child.getLayoutParams().width;
mCamera.translate(0.0f, 0.0f, 100.0f);
float zoomAmount = 0;
zoomAmount = Math.abs((float) (rotationAngle));
mCamera.translate(0.0f, 0.0f, zoomAmount - 300.0f);
mCamera.getMatrix(imageMatrix);
imageMatrix.preTranslate(-(imageWidth/2), -(imageHeight/2));
imageMatrix.postTranslate((imageWidth/2), (imageHeight/2));
mCamera.restore();
Log.e(LOG_TAG, "in transformImageBitmap");
child.invalidate();
}
我怎样才能使它正常工作?