When click a button rotate image clockwise in android
Create button_rotate.xml
in anim
folder:
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:fromDegrees="0"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" />
Now create animation in Java file:
/* Get ImageView Object */
ImageView iv = (ImageView) view.findViewById(R.id.refresh_action_view);
/* Create Animation */
Animation rotation = AnimationUtils.loadAnimation(context, R.anim.refresh_button_anim);
rotation.setRepeatCount(Animation.INFINITE);
/* start Animation */
iv.startAnimation(rotation);
For stop animation:
iv.clearAnimation();
Ahamed Salik
I'm Ahamed Salik from Matara, Sri Lanka.I'm working in the Mobile software development - Android. You can view my blogs in, http://www.ahamedsalik.com
Updated on June 16, 2022Comments
-
Ahamed Salik almost 2 years
I have a requirement where I have an ImageView and a button.
http://i1289.photobucket.com/albums/b509/salikclub/Rotate-Last-Start_zps0d2fced8.png
I want to rotate the image when I click the button. I need the image with full screen. but when I click the button image will be rotate, but not shown in the full screen. Please see the below link.
http://i1289.photobucket.com/albums/b509/salikclub/Rotate-Last1_zps2ccb1326.png
After that also when I clicked the button image will rotate. but positions is changed and not shown in full screen.
My requrement is, when I click the button image will be roatate clockwise and will show in full screen. Again I click the button image must be rotate clock wise and show in full screen. Likewise when I click the button image must be rotate.
Therefore can someone help me? If you can give me a sample code or a link that will be very much appriciated.
Here is the code which I'm trying,
main.xml
<merge xmlns:android="http://schemas.android.com/apk/res/android" > <ImageView android:id="@+id/imgView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:scaleType="fitXY" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:adjustViewBounds="true" android:src="@drawable/matterhorn" /> <Button android:id="@+id/btnRotate" android:layout_width="65dp" android:layout_height="35dp" android:layout_gravity="bottom|left" android:layout_marginLeft="190dp" android:layout_marginBottom="15dp" android:layout_weight="1" android:background="@android:color/transparent" android:drawableLeft="@drawable/btn_icon_rotate" > </Button> </merge>
This is my main activity "MainActivity.java"
package com.imageview.rotate; import android.os.Bundle; import android.app.Activity; import android.graphics.Matrix; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.ImageView.ScaleType; public class MainActivity extends Activity implements OnClickListener{ private Button btnRotate; private ImageView imgview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); imgview = (ImageView) findViewById(R.id.imgView); btnRotate = (Button) findViewById(R.id.btnRotate); btnRotate.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnRotate: Matrix matrix=new Matrix(); imgview.setScaleType(ScaleType.MATRIX); //required matrix.postRotate((float) 180f, imgview.getDrawable().getBounds().width()/2, imgview.getDrawable().getBounds().height()/2); imgview.setImageMatrix(matrix); break; } } }
Thanks in advance.
-
Ahamed Salik almost 11 yearsHi Pratik, Thanks for the reply. The animation works perfectly, but my requirement is slightly different. When I click the button I need to rotate the image to 90 angles. Can you help me to this. Thanks.
-
Pratik Butani almost 11 yearsYou can start animation
onClick()
ofButton
-
Pratik Butani almost 11 yearsYou can also change
android:toDegrees="90"
as per your Requirement. Thanks. :) Accept if useful and Do Vote up ;) -
Ahamed Salik almost 11 yearsHi Pratik. Thanks for the reply. Now orientation change from landscape to portrait. But I can't stop the animation. iv.stopAnimation(rotation); is not working. So how can I stop this
-
Milee over 8 yearsCan this be used on a button? I am trying to make the button rotate 180 and then back to 0. Although i used the same code OnClick() , it still doesnot reflect.
-
Kevan Aghera over 6 yearsi have a imageview rotate 360 degree when click on button and stop after one time animated and after click repeat animated can u help me?