2

我正在尝试使用(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();
}

我怎样才能使它正常工作?

4

1 回答 1

0

我测试了一个解决方案并成功了。这是在您的活动中禁用硬加速。我的意思是整个 Activity,因为我也在 View 上做过,但 bug 仍然没有修复。

您应该做的就是添加:

<activity android:hardwareAccelerated="false" />

给你的活动清单。

于 2013-10-22T17:38:25.707 回答