Rotación a un ImageView, dentro de un RelativeLayout
Tengo un ImageView
en un 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" />
Este xml define una barra de tabulación en la parte superior de la aplicación, justo debajo de la barra de notificación. Quiero que el ImageView
gire alrededor de su centro. Lo intenté de esta manera en mi método onCreate
:
- Lanzamiento de la actividad del widget
- sombra lista de android
- Establecer dinámicamente el fondo del diseño lineal
- Android Video View Thumbnail?
- Cómo implementar correctamente onRestoreInstanceState () para una subclase DialogPreference?
logo = (ImageView)findViewById(R.id.logoMobile); ApplyAnimationToObject doAnimation = new ApplyAnimationToObject(logo); doAnimation.startRotationAnimation();
Y luego la clase ApplyAnimationToObject
:
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); } }
Pero ImageView no girará ni tendrá ninguna animación en absoluto. ¿Puede alguien ayudarme?
EDITAR
He intentado usar este código:
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"); }
Y la salida hasta LogCat
me dice que la animación no ha terminado todavía, pero no hay animación para el ImageView
- Cómo deshabilitar el widget updatePeriodMillis?
- Algunos widgets de terceros dejan de actualizarse después de la actualización de la aplicación
- Android Appcompat v21 - utilizar el estilo antiguo del hilandero
- No se puede importar android.widget.NumberPicker en android
- Rich Text Box en Android
- Google Map se está cargando con parches cuadrados
- No se encontró ninguna actividad del lanzador. No se puede obtener widget para trabajar
- Inverted ListView en Android?
Pruebe el código siguiente:
Matrix matrix=new Matrix(); imageView.setScaleType(ScaleType.MATRIX); //required matrix.postRotate((float) angle, pivX, pivY); imagView.setImageMatrix(matrix);
Prueba de otra manera también:
Utilice RotateAnimation en la vista que desea girar y asegúrese de que la animación establezca en fillAfter = true, duration = 0 y fromDegrees = toDgrees
<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="45" android:toDegrees="45" android:pivotX="50%" android:pivotY="50%" android:duration="0" android:startOffset="0" />
E infle la animación en el código:
Animation rotation = AnimationUtils.loadAnimation(this, R.anim.rotation); myView.startAnimation(rotation);
Trate de usar el siguiente código:
public void rotateView(View v){ Animation rotateAnimation = new RotateAnimation(0, 360, v.getWidth() / 2, v.getWidth() / 2); rotateAnimation.setDuration(3000); v.startAnimation(rotateAnimation); }
Para solicitar la rotación:
rotateView(imgView);