2012-03-14 255 views
1

我正試圖編寫一個速度計,以後用GPS數據填充它。我有一個ImageView顯示針(480x480)作爲源和速度計作爲背景圖像(480x480)。現在我嘗試將針用下面的代碼旋轉: (一個單元[公里/小時]爲2.25°的角度)旋轉矩陣更改佈局

float angle = (float) (deltaspeed * 2.25); 
matrix.postRotate(angle); 
Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0, bMap.getWidth(), bMap.getHeight(),matrix, true); 
imgNeedle.setImageBitmap(bMapRotate); 

即暫時工作正常。 但是當針轉動時,佈局的大小就會受到影響。我想這是因爲圖片的對角線比高度大,並且在轉動矩陣時,佈局延伸到其全高(這是對角線)。所以我的速度計總是在變化。 任何想法我可以做什麼?

Speed-o-meter

回答

0

還好我現在已經建立了自己的這個問題的看法。當我重寫「onDraw()」 - 方法時,可以繪製到該視圖中,而不用在其他維度中拉伸視圖。

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    HEIGHT = this.getHeight(); 
    WIDTH = this.getWidth(); 
    matrix.setRotate(currAngle, WIDTH/2, HEIGHT/2); 
    canvas.drawBitmap(needleBitMap, matrix, null); 
} 
+0

我也有同樣的問題..你可以分享經驗與我?? ?? – 2013-01-09 02:42:43

+0

不要使用ImageView的「Src」和「Background」屬性。編寫你自己的類,從ImageView擴展到你的背景圖片並設置「Src」屬性。 然後使用我的答案中的codesnippet繪製旋轉的正面圖像。 – 2013-01-28 09:35:17