Deepu
Deepu

Reputation: 2616

Rotate object by 360 degrees with different Images in Android?

I am creating an Android App to rotate an image of Car by 360 degrees. I want to rotate the object with different image files of same object (eg Car)

Here is the Example that I want to implement in my app.

Is it possible to use different images in rotating the Object in Android?

Is there any API or Class available for this?

Here is my android code -

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
public class MainActivity extends Activity implements OnTouchListener {

private ImageView dialer;
private float y=0;
public boolean onTouch(View v, MotionEvent event) {
    double r=Math.atan2(event.getX()-dialer.getWidth()/2, dialer.getHeight()/2-event.getY());
    int rotation=(int)Math.toDegrees(r);
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            break;
        case MotionEvent.ACTION_MOVE:
            //x=event.getX();
            y=event.getY();
            updateRotation(rotation);
            break;
        case MotionEvent.ACTION_UP:
            break;
    }//switch       

    return true;

}//onTouch
private void updateRotation(double rot){
    float newRot=new Float(rot);
    Bitmap bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.round_button_big);
    Matrix matrix=new Matrix();
    matrix.postRotate(newRot,bitmap.getWidth()/2,bitmap.getHeight()/2);
    if(y>250){
        Bitmap reDrawnBitmap=Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
        dialer.setImageBitmap(reDrawnBitmap);
    }
    else{
        Bitmap reDrawnBitmap=Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
        dialer.setImageBitmap(reDrawnBitmap);
    }
}
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    dialer = (ImageView) findViewById(R.id.imageView1);
    dialer.setOnTouchListener(this);
    }//onCreate

}

Upvotes: 1

Views: 4103

Answers (1)

Ion Aalbers
Ion Aalbers

Reputation: 8030

If you have X amount of pictures from different angles of the car, you only have to listen to the onTouch when you want to change the ImageView.

I advice to use an LevelListDrawable and use setImageLevel to smoothly walk through them.

Upvotes: 2

Related Questions