use this code, hope it will be useful ... you have to write this method to perform the rotation operation
public void paintFromCenter(float angle, Canvas c) { Bitmap b = sprite; Bitmap h = b; Matrix matrix = new Matrix(); matrix.postRotate(angle, h.getWidth() / 2, h.getHeight()); matrix.postTranslate(getX(), getY());
in your program you have to write the onTouchEvent () method
public boolean onTouchEvent(MotionEvent event) { int action = event.getAction(); if (action == MotionEvent.ACTION_DOWN) { edX = (int) event.getX(); edY = (int) event.getY(); if ((edX > objectSprite.getX() && edX < objectSprite.getX() + objectSprite.getWidth() && edY > objectSprite.getY() && edY < objectSprite.getY() + objectSprite.getHeight())) { } } if (action == MotionEvent.ACTION_MOVE) { emX = (int) event.getX(); emY = (int) event.getY(); if (edX < emX && angle <= 90) { update(canvas); CHAR = 'D'; } else if (edX > emX && angle > 0) { update(canvas); CHAR = 'U'; } if (edY < emY && angle <= 90) { update(canvas); CHAR = 'L'; } else if (edY > emY && angle >= 0) { update(canvas); CHAR = 'R'; } } return true; }
and you need to create an update () method to rotate your angle by the angle of the touch event, which can be determined by your choice. I initially declare
int angle=1; public void update(Canvas canvas) { switch (CHAR) { case 'D': angle += 1; break; case 'U': angle -= 1; break; case 'R': angle -= 1; break; case 'L': angle += 1; break; } }
Now you need to draw your object in a draw () method like this
public void draw() { objectSprite.paintFromCenter(angle, canvas); }
KuldeeP ChoudharY
source share