Мне нужно создать компас в приложении, над которым я работаю. Поэтому я попытался создать новое представление под названием 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);