覆盖流视图无效永不结束循环

时间:2013-05-22 17:49:52

标签: android camera invalidation hardware-acceleration coverflow

我正在尝试使用(Neil Davies implementation)实现封面流程。 在我的应用程序中,我必须使用硬件加速,但是当我将硬件加速属性设置为true时,此coverflow实现效果不佳(它使得相机翻译非常不平滑并且在滚动时卡住)。

我试图仅在视图层上禁用硬件加速 - 这对我没有帮助。

根据一些解决方案,我发现了hereor here(以及其他一些),我必须在应用相机翻译后致电View.invalidate()。正如您在附加的代码段中看到的,我添加了此行,但在添加此invalidate()调用之后,将在永无止境的循环中调用此transformImageBitmap()函数。据我所知,在视图失效后,视图正在“布局”,transformImageBitmap()再次被调用。 transformImageBitmap()函数的这个永无止境的循环会在我的应用程序中导致一些预格式问题。

这是我的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();
}

我该如何正常工作?

1 个答案:

答案 0 :(得分:0)

我测试解决方案并取得成功。这会阻止您的活动中的加速加速。我的意思是整个活动,因为我也在View上做了这个,而且bug还没有修复。

您应该做的就是添加:

<activity android:hardwareAccelerated="false" />

给你活动清单。