2013-04-12 57 views
1
bmpAndroidMarker = BitmapFactory.decodeResource(context.getResources(), R.drawable.t_move2); 
         bmpAndroidMarkerResult = Bitmap.createBitmap(bmpAndroidMarker.getWidth(), bmpAndroidMarker.getHeight(), Bitmap.Config.ARGB_8888); 
         Canvas tempCanvas = new Canvas(bmpAndroidMarkerResult); 
         tempCanvas.rotate(direction+45, bmpAndroidMarker.getWidth()/2, bmpAndroidMarker.getHeight()/2); 
         tempCanvas.drawBitmap(bmpAndroidMarker, 0, 0, null); 

這是它寫的代碼(借來的)。該圖標是在一個圖像視圖內,在一個列表視圖內生成的。Android位圖旋轉畫布作物/剪切圖像

我的問題是,在這個旋轉「箭頭」,它似乎「夾」的部分遠邊了,就好像它是保持原有的位圖的尺寸。我無法弄清楚如何讓它「溢出」並呈現正確大小的圖像。

有沒有這樣做的一些方法?

回答

2

你旋轉45度圖像,從而使結果位圖應該是原來的寬度加上原件對角線寬度(勾股定理應該能夠幫助)。

AFAIK創建位圖的結果時,因爲這是它被畫在畫布上,旋轉它的內容不會旋轉容器,你需要做的數學你自己。

0

嘗試包裝你的ImageView中的FrameLayout和設置框架佈局的寬度和高度,你試圖渲染圖像的大小。您可以在視圖的佈局文件中像這樣做...

<FrameLayout 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_width="YOUR IMAGE WIDTH" 
     android:layout_height="YOUR IMAGE HEIGHT"> 
     <ImageView 
      android:scaleType="matrix" 
      android:layout_width="YOUR IMAGE WIDTH" 
      android:layout_height="YOUR IMAGE HEIGHT" 
      android:src="@drawable/YOUR IMAGE FILE" /> 
    </FrameLayout> 

...或者用你指定的尺寸,然後添加你的ImageView作爲一個子視圖建立您的FrameLayout一種編程方式。

如果你的形象是不是可以使用Android屏幕更大:scaleType =「矩陣」,從比例保持並確保您的長寬比被保留。

這原本是由帕夫洛Viazovskyy here回答。信貸到期的信用!