Ho bisogno di creare una bussola su un'app su cui sto lavorando. Così ho provato a creare una nuova vista chiamata CompassView che estende sostanzialmente la visualizzazione di immagini, mostra una bitmap che ha puntato su est ovest nord sud, utilizza i sensori per trovare i gradi a cui punta il telefono e ruota l'immagine di conseguenza in modo che possa creare una vera bussola. Ma il problema è che se provo a ruotare l'immagine ad alcuni angoli come 45 gradi, si restringe. Ecco alcune immagini per spiegarlo meglio.Ruota immagine senza restringere su Android
Come si può vedere, la seconda immagine è rimpiccioliti giù quando provo a ruotare attorno 45. Quello che voglio fare è questo:
Ecco il codice attualmente in uso:
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);
Qualsiasi aiuto sarebbe opportuno ated. Grazie
EDIT: (SOLUTION) Ho finalmente funzionato grazie alla risposta accettata. Ecco il codice che sto usando per chi vuole sapere come funzionava:
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);
grazie mille, non sapevo che questo potrebbe essere acheived da rotateanimazione. Ho solo dovuto modificare alcune parti del codice per farlo funzionare – KSubedi