2

Я пытаюсь реализовать поток обтекания с использованием (Neil Davies implementation). В моем приложении я должен использовать аппаратное ускорение, но когда я установил свойство аппаратного ускорения в значение true, эта реализация Coverflow не работает хорошо (это делает трансляции камеры очень негладки и stucks при прокрутке).Неисправность представления потока обтекания цикла

Я попытался отключить аппаратное ускорение только на уровне представления - это не помогло мне.

В соответствии с некоторыми решениями я нашел here, or 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(); 
} 

Как я могу сделать эту работу должным образом?

ответ

0

Я тестирую решение и добиваюсь успеха. Это отключает жесткое ускорение в вашей деятельности. Я имею в виду целую активность, потому что я также сделал это на View, и ошибка все еще не исправлена.

Все, что вам нужно сделать, это добавить:

<activity android:hardwareAccelerated="false" /> 

вам активность проявляется.

+0

Я пробовал оба варианта, т. Е. Тег hardwareAcceleration установлен на false и child.invalidate() внутри метода transformImageBitmap(), но я вижу постоянную видимость недействительности. пожалуйста, помогите мне изучить другие варианты. – Ari

Смежные вопросы