Поворот изображения без уменьшения на Android

Мне нужно создать компас в приложении, над которым я работаю. Итак, я попытался создать новый вид под названием CompassView, который в основном расширяет представление изображения, показывает растровое изображение, на которое указывает восток-запад-север-юг, использует датчики для определения градусов, на которые указывает телефон, и соответствующим образом поворачивает изображение, чтобы оно создавало настоящий компас. Но проблема в том, что если я попытаюсь повернуть изображение на некоторые углы, например, на 45 градусов, оно сожмется. Вот несколько изображений, чтобы объяснить это лучше.

This is normal

This is shrinked

Как видите, второе изображение сжимается, когда я пытаюсь повернуть его на 45°. Я хочу, чтобы оно делало следующее.: this

Вот код, который я сейчас использую:

        Bitmap bMap = BitmapFactory.decodeResource(getResources(),
                R.drawable.compass);
        Matrix xMatrix = new Matrix();
        xMatrix.reset();
        xMatrix.postRotate(360-mValue, 75, 75); //This is 75 because 150 is the image width
        Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0,
                bMap.getWidth(), bMap.getHeight(), xMatrix, true);
        setImageBitmap(bMapRotate);

Буду признателен за любую помощь. Спасибо

РЕДАКТИРОВАТЬ:(РЕШЕНИЕ) Наконец-то я заработал благодаря принятому ответу. Вот код, который я использую для тех, кто хочет знать, как это работает:

RotateAnimation rAnimAntiClockWise = new RotateAnimation(
                    360 - mValue, 360 - event.values[0],
                    Animation.RELATIVE_TO_SELF, 0.5f,
                    Animation.RELATIVE_TO_SELF, 0.5f);
//mValue is the angle in degrees and i subtracted it from 360 to make it anticlockwise, and event.values[0] is the same thing as mValue
rAnimAntiClockWise.setFillAfter(true);
rAnimAntiClockWise.setInterpolator(new LinearInterpolator());
rAnimAntiClockWise.setDuration(0);
startAnimation(rAnimAntiClockWise);
10
задан KSubedi 2 April 2012 в 08:09
поделиться