Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rotation to an ImageView, inside a RelativeLayout

I have an ImageView in a RelativeLayout:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabBar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#272727"
android:orientation="horizontal" >

<ImageView
    android:id="@+id/logoMobile"
    android:layout_width="100dp"
    android:layout_height="50dp"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:gravity="center"
    android:paddingTop="2.2dp"
    android:src="@drawable/logo" />

<ImageButton
    android:id="@+id/BtnSlide"
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:layout_centerVertical="true"
    android:background="@null"
    android:src="@drawable/lin" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:layout_alignParentTop="true"
    android:layout_toRightOf="@+id/BtnSlide"
    android:gravity="center"
    android:paddingLeft="30dp"
    android:text="HEADER"
    android:textAppearance="?android:attr/textAppearanceMedium" />

This xml defines a "Tab bar" ontop of the application, just beneath the notification bar. I want the ImageView to rotate around its center. I tried it this way in my onCreate method:

logo = (ImageView)findViewById(R.id.logoMobile);
ApplyAnimationToObject doAnimation = new ApplyAnimationToObject(logo);
doAnimation.startRotationAnimation();

And then the ApplyAnimationToObject class:

package Logic;

public class ApplyAnimationToObject {

final ImageView image;

public ApplyAnimationToObject(ImageView image) {
    this.image = image;
}

public void startRotationAnimation() {
    RotateAnimation anim = new RotateAnimation(0f, 350f, 15f, 15f);
    anim.setInterpolator(new LinearInterpolator());
    anim.setRepeatCount(Animation.INFINITE);
    anim.setDuration(7000);
    image.startAnimation(anim);
  }
}

But the ImageView will not rotate or have any animation at all. Can anyone help me out?

EDIT

I tried using this code:

public void rotateView(View v){
    Animation rotateAnimation = new RotateAnimation(0,
            360, v.getWidth() / 2, v.getWidth() / 2);
    rotateAnimation.setDuration(10000);
    v.startAnimation(rotateAnimation);
    if(rotateAnimation.hasEnded())
        Log.i("+++++ANIMATION+++++", "ENDED!!");
    else
        Log.i("+++++++ANIMATION++++++", "NOT ENDED");
}

And the output til LogCat tells me that the animation hasn't ended yet, but there is no animation to the ImageView

like image 230
Tobias Moe Thorstensen Avatar asked Feb 20 '23 01:02

Tobias Moe Thorstensen


1 Answers

try the following code:

     Matrix matrix=new Matrix();
     imageView.setScaleType(ScaleType.MATRIX);   //required
     matrix.postRotate((float) angle, pivX, pivY);
     imagView.setImageMatrix(matrix);
like image 88
G M Ramesh Avatar answered Feb 28 '23 02:02

G M Ramesh