Rotationmatrix меняет макет - PullRequest
1 голос
/ 14 марта 2012

Я пытаюсь запрограммировать спидометр, чтобы позже заполнить его данными 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

1 Ответ

0 голосов
/ 19 марта 2012

хорошо, теперь я построил свой собственный взгляд на эту проблему. Когда я переопределяю метод "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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...