Мне нужно создать компас в приложении, над которым я работаю.Поэтому я попытался создать новый вид под названием CompassView, который в основном расширяет вид изображения, показывает растровое изображение, на которое указывает восток-запад-север-юг, использует датчики для определения градусов, на которые указывает телефон, и соответственно поворачивает изображение, чтобы ононастоящий компас.Но проблема в том, что если я пытаюсь повернуть изображение на несколько углов, например, на 45 градусов, оно уменьшается.Вот несколько изображений, чтобы объяснить это лучше.
Как вы можете видеть, второе изображение сжимается, когда я пытаюсь вращаться вокруг45. Я хочу, чтобы это было так:
Вот код, который я сейчас использую:
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);