2011-01-23 17 views
19

Quiero rotar una imagen usando ImageView.setImageMatrix (matriz) pero simplemente no tiene ningún efecto. Llamo a matrix.postRotate (45, 20, 20); antes de pasarlo a la función anterior pero sin efecto, la imagen no se gira. ¿Por qué?¿Por qué ImageView.setImageMatrix() no funciona?

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

Respuesta

58

No estoy muy seguro, pero creo que debe establecer el tipo de escala:

imgView.setScaleType(ScaleType.MATRIX); 

También puede hacer que en XML con android:scaleType="matrix".

+0

@Mr. Roland: oh bien. No estaba seguro porque recientemente miré a la fuente ImageView y encontré que 'mMatrix' (la matriz de la imagen) se lee también en otros modos, pero volví a mirar ahora y en realidad se restablece usando' Matrix.set *() ' serie de métodos. – bigstones

+5

No funciona para mí. Mi código 'Matrix matrix = new Matrix(); \t matrix.postRotate (90); \t \t my_img.setScaleType (ScaleType.MATRIX); \t my_img.setImageMatrix (matrix); '¡y no pasa nada! – thomaus

+1

Debe usar 'matrix.postRotate (90, imageWidth/2, imageHeigth/2);' –

Cuestiones relacionadas