2011-01-23 17 views
19

Chcę obrócić obraz przy użyciu ImageView.setImageMatrix (macierzy), ale po prostu nie ma żadnego efektu. Nazywam matrix.postRotate (45, 20, 20); przed przekazaniem go do powyższej funkcji, ale bez efektu, obraz nie jest obracany. Czemu?Dlaczego ImageView.setImageMatrix() nie działa?

matrix.postRotate(45, 20, 20); 
ImageView.setImageMatrix(matrix) 

Odpowiedz

58

Nie jestem pewien, ale myślę, że należy ustawić typ skali:

imgView.setScaleType(ScaleType.MATRIX); 

Można również zrobić w XML z android:scaleType="matrix".

+0

@Mr. Roland: och, dobrze. Nie byłem pewien, ponieważ ostatnio spojrzałem na źródło ImageView i odkryłem, że 'mMatrrix' (matryca obrazu) jest odczytywany także w innych trybach, ale ja ponownie się obejrzałem i faktycznie jest on resetowany za pomocą' Matrix.set *() ' seria metod. – bigstones

+5

To nie działa dla mnie. Mój kod 'Matrix matrix = new Matrix(); \t matrix.postRotate (90); \t \t my_img.setScaleType (ScaleType.MATRIX); \t my_img.setImageMatrix (macierz); 'i nic się nie dzieje! – thomaus

+1

Musisz użyć 'matrix.postRotate (90, imageWidth/2, imageHeigth/2);' –