ViewAnimator использует анимацию поворота для перехода между видами - PullRequest
1 голос
/ 06 октября 2011

Я хочу использовать ViewAnimator для перехода от одного представления к другому (в моем тестовом приложении представления являются TextViews). Мои две анимации перечислены ниже. Поведение, которое я наблюдаю, заключается в том, что обе анимации запускаются, как только я запускаю аниматор, в отличие от запуска InAnimation и после запуска OutAnimation. То, что я вижу, выглядит как вертушка - вращающийся вид перпендикулярен вращающемуся виду. Я хочу видеть вращающийся вид, чтобы перейти из своего нормального горизонтального положения (0 градусов) в вертикальное (90 градусов); затем я хочу увидеть вращающийся вид, чтобы перейти от вертикального (-90 градусов) к горизонтальному (0 градусов).

@anim/rotate_out.xml

<?xml version="1.0" encoding="UTF-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0" android:toDegrees="90" android:pivotX="50%"
    android:pivotY="50%" android:repeatCount="0" android:duration="500"
    android:interpolator="@android:anim/linear_interpolator">
</rotate>

@anim/rotate_in.xml

<?xml version="1.0" encoding="UTF-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="-90" android:toDegrees="0" android:pivotX="50%"
    android:pivotY="50%" android:repeatCount="0" android:duration="500"
    android:interpolator="@android:anim/linear_interpolator">
</rotate>

и в основной деятельности по созданию ...

va = (ViewAnimator) findViewById(R.id.ViewFlipper01);
va.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate_in));
va.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate_out));

есть идеи?

Ответы [ 2 ]

3 голосов
/ 06 октября 2011

может быть?@ anim / rotate_outin.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
  <rotate xmlns:android="http://schemas.android.com/apk/res/android"
      android:fromDegrees="0" android:toDegrees="90" android:pivotX="50%"
      android:pivotY="50%" android:repeatCount="0" android:duration="500"
      android:interpolator="@android:anim/linear_interpolator">
  </rotate>
  <rotate xmlns:android="http://schemas.android.com/apk/res/android"
      android:fromDegrees="0" android:toDegrees="90" android:pivotX="50%"
      android:pivotY="50%" android:repeatCount="0" android:duration="500"
      android:interpolator="@android:anim/linear_interpolator">
  </rotate>
</set>
2 голосов
/ 14 октября 2011

Исходный код ViewAnimator можно найти здесь .Согласно методу showOnly(), намеренно обе анимации запускаются параллельно, поэтому, пока одно представление «перемещено», другое уже «перемещено».Таким образом, чтобы достичь своей цели, вы должны добавить некоторую задержку к анимации, чтобы она начиналась, когда анимация уже завершена.Например, вы можете установить, например, android: duration = "500" для анимации out, а для android: startOffset = "500" - анимацию.Просто убедитесь, что одинаковые значения для обоих.

...