Nurzhan Nogerbek
Nurzhan Nogerbek

Reputation: 5236

How to rotate ImageView by clockwise

I have sliding up panel and in the titlebar of that panel I have ImageView as in the picture. How to rotate to 180* by clockwise that ImageView when user slide panel up and anti-clockwise when slide down.

For sliding that panel I have method:

@Override
public void onPanelSlide(View panel, float slideOffset) {
     Log.i(TAG, "onPanelSlide, offset " + slideOffset);

     //Animation here
}

enter image description here

Thanks for any help!

Upvotes: 1

Views: 1679

Answers (3)

Misagh
Misagh

Reputation: 3623

If you want to rotate a view without animation:

  • view.setRotation(float) sets the degrees that the view is rotated around the pivot point. Increasing values result in clockwise rotation.
  • view.setRotationX(float) sets the degrees that the view is rotated around the horizontal axis through the pivot point. Increasing values result in clockwise rotation from the viewpoint of looking down the x axis. When rotating large views, it is recommended to adjust the camera distance accordingly.

  • view.setRotationY(float) sets the degrees that the view is rotated around the vertical axis through the pivot point. Increasing values result in counter-clockwise rotation from the viewpoint of looking down the y axis. When rotating large views, it is recommended to adjust the camera distance accordingly.

If you want to use animation:

Upvotes: 1

Marcus
Marcus

Reputation: 6717

You should try this out, setting an animation for your e.g. ImageView

@Override
public void onPanelSlide(View panel, float slideOffset) {
     Log.i(TAG, "onPanelSlide, offset " + slideOffset);

    // Locate view
    ImageView iv= (ImageView) findViewById(R.id.iv);

    // Create an animation instance
    Animation an = new RotateAnimation(0.0f, 180.0f, pivotX, pivotY);

    // Set the animation's parameters
    an.setDuration(10000);               // duration in ms
    an.setRepeatCount(0);                // -1 = infinite repeated
    an.setRepeatMode(Animation.REVERSE); // reverses each repeat
    an.setFillAfter(true);               // keep rotation after animation

    // Aply animation to image view
    iv.setAnimation(an);
}

Upvotes: 0

Nick
Nick

Reputation: 1

I didn't want to mark this as an answer but I can't leave comments yet, I was able to get Apurva's solution working correctly but I had to use this instead of getApplicationContext(), I had to use this because of where I was setting the animation from, the code in my application where I am attaching the animation looks like this...

ImageView billysArm = (ImageView) findViewById(R.id.imageView6);

    Animation rotate = AnimationUtils.loadAnimation(this, R.anim.rotate);

    billysArm.startAnimation(rotate);

hope this helps

Upvotes: 0

Related Questions