Je dois créer une boussole sur une application sur laquelle je travaille. J'ai donc essayé de créer une nouvelle vue appelée CompassView qui étend essentiellement imageview, montre un bitmap qui a est pointé vers l'ouest, utilise des capteurs pour trouver les degrés le téléphone est pointé, et tourne l'image en conséquence de sorte qu'il créerait une boussole réelle. Mais le problème est que si j'essaie de faire pivoter l'image à certains angles de 45 degrés, elle rétrécit. Voici quelques images pour mieux l'expliquer.Faire pivoter l'image sans rétrécir sur Android
Comme vous pouvez le voir, la deuxième image est rétreint vers le bas lorsque je tente de tourner autour de 45. Ce que je veux faire est la suivante:
Voici le code que j'utilise actuellement:
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);
Toute aide serait appréciée até. THanks
EDIT: (SOLUTION) Je l'ai finalement fait fonctionner grâce à la réponse acceptée. Voici le code que je utilise pour tous ceux qui veulent savoir comment cela a fonctionné:
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);
merci beaucoup, je ne savais pas que cela pourrait être acheived de rotateanimation. je devais juste modifier certaines parties du code pour le faire fonctionner – KSubedi