днес настроих новия Android JB 4.3 на моя Nexus 7 и аз опитах да стартирам приложението си.
Всичко работи както трябва, с изключение на едно малко нещо за ImageViews с ScaleType.MATRIX.
По принцип това, което имам в приложението си, е ImageView като фон и съответно на a ViewPager обратни извиквания премествам фокусираната част от изображението актуализиране на Матрицата, която дадох на imageView с помощта на setImageMatix( Matrix matrix).
проблемът изглежда е, че вече не мога да актуализирам матрицата, просто трябва да инстанцирам нова и да я предам на Изглед на изображение.
успях да го заобиколя, създавайки всеки път нова 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 без приложен мащаб или превод, като например, ако матрицата се върне към идентичността.