2

(Neil Davies implementation)을 사용하여 커버 플로우를 구현하려고합니다. 내 응용 프로그램에서 하드웨어 가속을 사용해야하지만 하드웨어 가속 속성을 true로 설정하면이 Coverflow 구현이 제대로 작동하지 않습니다 (카메라 번역이 매우 부드러 우며 스크롤 할 때 달라 붙음).커버 플로우 뷰 무효화 사이클이 끝나지 않습니다.

보기 레이어에서만 하드웨어 가속을 사용하지 않으려 고 시도했습니다. 이것이 도움이되지 못했습니다.

내가 here, or here을 발견 몇 가지 솔루션 (및 일부 다른)에 따르면, 나는 카메라 번역을 적용한 후 View.invalidate()에 전화를해야합니다. 첨부 된 코드 조각에서 볼 수 있듯이이 줄을 추가했지만이 뒤에 invalidate()을 호출하면이 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(); 
} 

가 어떻게 적절하게이 작업을 할 수 있습니다 : 여기

내 transformImageBitmap() 함수인가?

답변

0

솔루션을 테스트하고 성공합니다. 그것은 당신의 활동에있어 격렬한 가속을 불가능하게합니다. 내가보기에도 그것을했기 때문에 전체 활동을 의미하고 버그는 여전히 고쳐지지 않습니다.

<activity android:hardwareAccelerated="false" /> 

활동 매니페스트 당신에게 :

당신이해야 할 모든 추가하는 것입니다.

+0

hardwareAcceleration 태그를 false로 설정하고 transformImageBitmap() 메소드 내부에서 child.invalidate() 옵션을 시도했지만 여전히 상수보기 무효화가 표시됩니다. 다른 옵션을 찾아 보도록 도와주세요. – Ari