2010-05-09 57 views
0

我想使用方向傳感器和當前GPS位置顯示指示朝向目標方向的箭頭。一切運作良好,除了我想旋轉我的ImageView中的箭頭圖像。ImageView中的旋轉圖像

當前的代碼,其示出的箭頭指向上方,是這樣的:

ImageViewArrow.setImageResource(R.drawable.arrow); 

什麼是用於示出的箭頭,由N度旋轉的最佳解決方案?

我想這一點,但它給搞砸了顯卡:

Matrix matrix = new Matrix(); 
matrix.postRotate(Rotation); 
Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(), 
    R.drawable.arrow); 
Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, 
    bitmapOrg.getWidth(),bitmapOrg.getHeight(), matrix, true); 
BitmapDrawable bmd = new BitmapDrawable(resizedBitmap); 
InfoArrow.setScaleType(ScaleType.CENTER); 
InfoArrow.setImageDrawable(bmd); 

回答

1
+0

我試過在發佈問題之前,但我得到了錯誤的結果。然而,這實際上是解決方案 - 我只需要刪除InfoArrow.setScaleType(ScaleType.CENTER);然後它看起來是正確的。 – 2010-05-09 16:47:16

+0

對於不斷更新的東西來說,這是非常低效的。對於這種事情,你應該寫一個自定義的View來繪製你想要的東西。沒有必要像這樣濫用像ImageView這樣的標準類;編寫一個繪製位圖的自定義視圖(並在此之前應用旋轉)非常簡單。 – hackbod 2010-05-09 19:58:34

0

有一個在createBitmap方法矩陣參數可用於調整大小和旋轉圖像。你可以嘗試如下:

Matrix matrix = new Matrix(); 
    // to rotate the image bitmap use post Rotate 
    matrix.postRotate(45); 


    Bitmap rotatedImage = Bitmap.createBitmap(bitmapOrg, 0, 0, 
         width, height, matrix, true); `