2012-03-14 9 views
1

私はGPSデータなどで後でそれを埋めるためにスピードメーターをプログラムしようとしています。私はImageViewを持っています。これは針(480x480)をソースとして、スピードメーターを背景画像(480x480)として表示しています。 (1つの単位[km /時]が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

私も同じ問題があります。私と経験を共有できますか? –

+0

ImageViewの "Src"プロパティと "Background"プロパティを使用しないでください。 ImageViewから継承した独自のクラスを作成し、backgroundpictureで "Src"プロパティを設定します。 次に、私の答えにcodesnippet i postetを使用して、回転した正面画像を描画します。 –

関連する問題