2012-03-14 5 views
1

나는 나중에 GPS 데이터 등으로 채우기 위해 속도계를 프로그래밍하려고합니다. 나는 바늘 (480x480)을 소스 및 속도계와 함께 배경 이미지 (480x480)로 보여주는 ImageView를 가지고 있습니다. 이제 다음 코드로 바늘을 회전하려고 : 이 순간을 위해 잘 작동Rotationmatrix 변경 레이아웃

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); 

(하나 개의 단위는 [kmh]가 2.25 °의 각도입니다). 그러나 바늘이 돌아서는 동안 레이아웃의 크기가 절충됩니다. 나는 그림의 대각선이 높이보다 크고 행렬을 돌리는 동안 레이아웃이 전체 높이 (그 다음 대각선)로 늘어나 있기 때문이라고 생각합니다. 그래서 내 속도계는 항상 바뀌고 있습니다. 내가 할 수있는 아이디어가 있습니까? 좋아

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을 사용하십시오. –