1

スピードメーターをプログラムして、後で GPS データなどを入力しようとしています。針 (480x480) をソースとして表示し、速度計を背景画像 (480x480) として表示する ImageView があります。ここで、次のコードで針を回転させてみます: (1 単位 [km/h] は 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);

それは今のところうまくいきます。しかし、針が回っている間、レイアウトのサイズは妥協します. 写真の対角線が高さよりも大きく、マトリックスを回転させている間、レイアウトがその高さいっぱいまで伸びているためだと思います (これは対角線です)。だから私のスピードメーターは常に変化しています。私にできることはありますか?

スピードメーター

4

1 に答える 1

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);
}
于 2012-03-19T16:57:07.933 に答える