2011-01-23 40 views
19

Tôi muốn xoay một hình ảnh bằng cách sử dụng ImageView.setImageMatrix (ma trận) nhưng nó chỉ đơn giản là không có bất kỳ tác dụng. Tôi gọi matrix.postRotate (45, 20, 20); trước khi chuyển nó đến hàm trên nhưng không có hiệu lực, hình ảnh không được xoay. Tại sao?Tại sao ImageView.setImageMatrix() không hoạt động?

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

Trả lời

58

Tôi không thực sự chắc chắn nhưng tôi nghĩ rằng bạn nên đặt loại quy mô:

imgView.setScaleType(ScaleType.MATRIX); 

Bạn cũng có thể làm điều đó trong XML với android:scaleType="matrix".

+0

@Mr. Roland: ồ. Tôi không chắc vì gần đây tôi đã nhìn vào nguồn ImageView và thấy rằng 'mMatrix' (ma trận hình ảnh) cũng được đọc ở các chế độ khác, nhưng bây giờ tôi đã xem lại và thực sự nó được thiết lập lại bằng cách sử dụng' Matrix.set *() ' loạt các phương pháp. – bigstones

+5

Nó không hiệu quả với tôi. Mã của tôi 'Ma trận ma trận = ma trận mới(); \t matrix.postRotate (90); \t \t my_img.setScaleType (ScaleType.MATRIX); \t my_img.setImageMatrix (ma trận); 'và không có gì xảy ra! – thomaus

+1

Bạn cần sử dụng 'matrix.postRotate (90, imageWidth/2, imageHeigth/2);' –

Các vấn đề liên quan