2014-03-22 5 views
3

Я следовал инструкции от dmanargias ответить здесь: Android Fragments and animationФрагмент слайд анимации заменяет первый фрагмент, прежде чем анимировать

анимаций сами работают, однако первоначальный анимации при добавлении фрагмента делает что-то странное. Первоначальный фрагмент, по-видимому, заменяется новым фрагментом перед запуском анимации.

например. Можно было бы ожидать анимации < - B (B скользящим справа Накройте)

Однако, как только действие Начинается мгновенно становится B, и вы получите анимацию B < - B.

Когда выскакивают стек вы получаете правильную анимацию A -> B (B соскальзывание обнажив)

Это код, который добавляет фрагмент:

CategoryFragment newFragment = CategoryFragment.newInstance(); 

FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
fragmentTransaction.setCustomAnimations(R.anim.enter, R.anim.exit, R.anim.pop_enter, R.anim.pop_exit); 

fragmentTransaction.replace(R.id.fragment, newFragment); 
fragmentTransaction.addToBackStack(null); 
fragmentTransaction.commit(); 

любых идеи почему это произойдет, и если есть способ исправить это?

ответ

0

Попробуйте это:

final CategoryFragment newFragment = CategoryFragment.newInstance(); 
    final View container = findViewById(R.id.fragment); 
    container.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
      transaction.setCustomAnimations(R.anim.enter, R.anim.exit, R.anim.pop_enter, R.anim.pop_exit); 
      transaction.replace(container.getId(), newFragment).commit(); 
      currentFragment = cardFragment; 
     } 
    }, 0); 
0

У меня была точно такая же проблема, но с различными анимациями. Убедитесь, что android:shareInterpolator не установлен в true в вашей анимации xml.

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