сегодня я установил новый Android JB 4.3 на свой Nexus 7 и попытался запустить мое приложение.
Все работает так, как должно, за исключением одной мелочи, касающейся ImageViews с ScaleType.MATRIX.
По сути, в моем приложении есть ImageView в качестве фона и, соответственно, обратные вызовы ViewPager перемещают сфокусированную часть изображения обновление Matrix, которое я передал в imageView, используя setImageMatix(Матричная матрица).
проблема в том, что я больше не могу обновлять матрицу, мне просто нужно создать новую и передать ее в ImageView.
мне удалось обойти это, создавая каждый раз новую Matrix, но это кажется ужасно память дорогая по сравнению со старой версией.
это ОШИБКА? есть ли способ обновить Matrix? (кстати, я уже пытался invalidate() ImageView и т. д. )
НЕ РАБОТАЕТ
private void updateMatrix( final int page, final double offset ) {
double pagePosition = page + offset;
Matrix matrix = imageView.getImageMatrix();
matrix.setScale( scale, scale );
matrix.postTranslate( - (float) ( pagePosition * pageWidth ) , 0 );
imageView.setImageMatrix( matrix );
imageView.invalidate();
}
РАБОТАЕТ
private void updateMatrix( final int page, final double offset ) {
double pagePosition = page + offset;
Matrix matrix = new Matrix();
matrix.setScale( scale, scale );
matrix.postTranslate( - (float) ( pagePosition * pageWidth ) , 0 );
imageView.setImageMatrix( matrix );
imageView.invalidate();
}
ИЗМЕНИТЬ:
в первом случае изображение отображается в верхнем левом углу ImageView без применения к нему масштаба или преобразования, как если бы матрица вернулась к идентичности.