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