Potrzebuję utworzyć kompas w aplikacji, nad którą pracuję. Tak więc próbowałem stworzyć nowy widok o nazwie CompassView, który zasadniczo rozszerza widok obrazu, pokazuje mapę bitową, która wskazuje na wschód zachód na północy wskazał na nią, wykorzystuje czujniki, aby znaleźć stopnie wskazane przez telefon, i obrócić obraz odpowiednio, aby utworzyć rzeczywisty kompas. Ale problem polega na tym, że jeśli próbuję obrócić obraz pod pewnymi kątami, na przykład pod kątem 45 stopni, kurczy się. Oto kilka obrazków, aby lepiej to wyjaśnić.Obracanie obrazu bez obkurczania w systemie Android
Jak widać, drugi obraz jest shrinked dół gdy próbuję obrócić Co chcę to zrobić około 45. to:
Oto kod, którego aktualnie używam:
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);
Każda pomoc będzie doceniona zmiażdżony. THanks
EDIT: (roztwór) I wreszcie to działa dzięki przyjętym odpowiedź. Oto kod używam dla każdego, kto chce wiedzieć, jak to działa:
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);
dziękuję, nie wiedziałem, że to może być acheived od rotateanimation. musiałem tylko zmodyfikować niektóre części kodu, aby działało – KSubedi