2012-03-14 66 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