2014-08-31 110 views
0

我想在RelativeLayout中多次渲染ImageView。 要做到這一點,我使用:在不改變大小的情況下旋轉imageView Android

angleRotation = angleRotation + (float)90; 

     Rect bounds = imgToRotate.getDrawable().getBounds(); 

     Matrix matrix=new Matrix(); 
     imgToRotate.setScaleType(ScaleType.MATRIX); //required 
     matrix.postRotate((float) angleRotation, bounds.width()/2 , bounds.height()/2); 
     imgToRotate.setImageMatrix(matrix); 

的問題是,我使用矩陣改變我的ImageView的大小。我不知道如何不改變大小。

任何幫助?非常感謝你。

+0

你的意思是圖像改變了尺寸以便縮小/縮小?或者圖像不是方形的,你的意思是newWidth = oldHeight && newHeight = oldWidth? – 2014-08-31 16:47:46

+0

我的意思是圖像保持比例,但它被縮小。 – user2335528 2014-08-31 16:50:27

回答

0

難道你不能簡單地使用一個XML文件來創建一個旋轉動畫? http://developer.android.com/guide/topics/resources/animation-resource.html

+0

我需要將此圖像寫入文件您認爲如果我使用旋轉圖像將在寫入後旋轉? – user2335528 2014-08-31 16:43:40

+0

我真的不確定要真正理解這個問題。 – soueuls 2014-08-31 16:44:54

+0

我想寫我的形象緩存,我不知道是否應用旋轉動畫,如果圖像將有旋轉應用一旦我寫它緩存。 – user2335528 2014-08-31 16:46:33

0

這是我在我的一個應用程序中使用的代碼來旋轉基於位圖的圖像。

Matrix mtx = new Matrix(); 
mtx.preRotate(90); 
Bitmap rotatedBitmap = Bitmap.createBitmap(originalBitmap, 0, 0, w, h, mtx, true); 

之後,您可以將圖像位圖設置爲imageView。 我假設你可以保留(或得到)你的原始位圖的引用。

編輯: 如果你的目標API 11和最多可以使用方法:

View.setRotation(float angle); 

希望它能幫助。

+0

是的,我已經試過這種方式,問題是我每次創建一個新的位圖時,增長堆。 – user2335528 2014-08-31 17:30:46

+0

你想要什麼API? – 2014-08-31 18:03:10

+0

Api最小值爲10 – user2335528 2014-08-31 18:09:13