Я пытаюсь реализовать поток обтекания с использованием (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();
}
Как я могу сделать эту работу должным образом?
Я пробовал оба варианта, т. Е. Тег hardwareAcceleration установлен на false и child.invalidate() внутри метода transformImageBitmap(), но я вижу постоянную видимость недействительности. пожалуйста, помогите мне изучить другие варианты. – Ari