В моей основной деятельности у меня есть viewflipper с тремя дочерними представлениями. После первого запуска приложения, когда я делаю первый щелчок правой кнопкой мыши, вид изменяется, но в нем нет анимации слайдов. После первого прокрутки анимация работает так, как ожидалось, при прохождении в любом направлении. Я следую этому учебнику. Код, который я использую:
public boolean onTouchEvent(MotionEvent touchevent)
{
switch (touchevent.getAction())
{
// when user first touches the screen
case MotionEvent.ACTION_DOWN:
{
lastX = touchevent.getX();
break;
}
case MotionEvent.ACTION_UP:
{
float currentX = touchevent.getX();
// left to right swipe
if (lastX < currentX)
{
if (mViewFlipper.getDisplayedChild() == 0)
break;
mViewFlipper.setInAnimation(this, R.anim.in_from_left);
mViewFlipper.setOutAnimation(this, R.anim.out_to_right);
mViewFlipper.showPrevious();
}
// right to left swipe
if (lastX > currentX)
{
if (mViewFlipper.getDisplayedChild() == mViewFlipper.getChildCount() - 1)
break;
mViewFlipper.setInAnimation(this, R.anim.in_from_right);
mViewFlipper.setOutAnimation(this, R.anim.out_to_left);
mViewFlipper.showNext();
}
break;
}
}
return false;
}
Когда я отлаживаю код, я не вижу различий между тем, когда анимация работает, а когда нет. Кроме того, я вижу это поведение на реальном устройстве и эмуляторе. Что я упустил? Я могу опубликовать файлы xml анимации и представление xml, если они необходимы.
EDIT:
Единственный способ, которым я могу заставить это работать, как ожидается, - установить следующее в методе onCreate:
mViewFlipper.setInAnimation(this, R.anim.in_from_right);
mViewFlipper.setOutAnimation(this, R.anim.out_to_left);
mViewFlipper.setFlipInterval(10000);
mViewFlipper.startFlipping();
Затем я вызываю stopFlipping() при первом прокрутке. Интересная вещь для меня заключается в том, что анимация работает при первом проглатывании с этими изменениями, даже если первый автоматический флип не произошел. Однако, если я просто устанавливаю анимацию в методе onCreate, не вызывая метод startFlipping(), у нее по-прежнему нет анимации при первом прокрутке. Может ли кто-нибудь дать объяснение, почему это происходит?