2015-06-11 2 views
2

Я пытаюсь реализовать приложение с анимацией. Я хочу, чтобы получить эту последовательность:Поворот анимации после перевода не работает на Android

1 - Перемещение изображения по горизонтали

2 - Поворот изображения на 90º

3 - Перемещение изображения по вертикали

Но в шаге 2, изображение не поверните на себя и переместитесь в исходное положение, чтобы вращаться.

В чем моя ошибка?

sequential.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:fillAfter="true" 
android:interpolator="@android:anim/linear_interpolator" > 

<translate 
    android:duration="1000" 
    android:fillAfter="true" 
    android:fromXDelta="0%p" 
    android:startOffset="500" 
    android:toXDelta="83%p" /> 

</set> 

Main.java

RotateAnimation animRotar1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    imagenPacman = (ImageView) findViewById(R.id.imagen); 
    fondoImagen = (RelativeLayout) findViewById(R.id.fondo_imagen); 

    animRotar1 = new RotateAnimation(0, 90, 
      Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 

    animPacman = AnimationUtils.loadAnimation(getApplicationContext(), 
      R.anim.sequential); 
    animPacman.setAnimationListener(new AnimationListener() { 

     @Override 
     public void onAnimationStart(Animation animation) {} 

     @Override 
     public void onAnimationRepeat(Animation animation) {} 

     @Override 
     public void onAnimationEnd(Animation animation) { 

      rotar1(); 
     } 
    }); 

    fondoImagen.startAnimation(animPacman); 
} 

private void rotar1() { 

    animRotar1.setInterpolator(new LinearInterpolator()); 
    animRotar1.setDuration(1000); 
    animRotar1.setFillEnabled(true); 
    animRotar1.setFillAfter(true); 

    fondoImagen.startAnimation(animRotar1); 
} 
+0

Это звучит как точка поворота изображения (вокруг которого он вращается) на самом деле не меняется, и он по-прежнему считает исходное положение, чтобы быть его точка опоры. – SuperBiasedMan

+0

вы должны указать значения поворота относительно вашего представления и каково происхождение, необходимое для поворота представления. –

ответ

0

так:

здесь вы должны caliculate расстояние от заданного положения после того, как перевести анимацию,

EDIT:

float pivotX=(getResources().getDisplayMetrics().widthPixels/100)*83; 

RotateAnimation animation2 = new RotateAnimation(0,90,Animation.RELATIVE_TO_PARENT,pivotX,Animation.RELATIVE_TO_PARENT,0); 
+0

Я редактировал свой код. Теперь изображение вернется в исходное положение, чтобы повернуть – IMS

+0

Я отредактировал свой ответ. –

+0

Изображение исчезнет, ​​чтобы попробовать повернуть – IMS

 Смежные вопросы

  • Нет связанных вопросов^_^