#android #анимация
Пытаюсь задать простую анимацию смены фрагментов. При помещении xml - файлов анимации в папку /anim/ выдает исключение: Caused by: java.lang.RuntimeException: Unknown animation name: objectAnimator Если же поместить файлы анимации в папку /animator/, то метод setCustomAnimation() ругается и говорит что необходим ресурс анимации из папки /anim/. Подскажите, как же все таки нужно сделать, чтобы это работало. Файл R.anim.slide_in_left.xml:Файл R.anim.slide_in_right.xml: Файл mainActivity.java: import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { Fragment1 f1; Fragment2 f2; FragmentTransaction fm; @Override protected void onCreate( Bundle savedInstanceState ) { super.onCreate( savedInstanceState ); setContentView( R.layout.activity_main ); f1 = new Fragment1(); f2 = new Fragment2(); fm = getSupportFragmentManager().beginTransaction(); fm.setCustomAnimations( R.anim.slide_in_left, R.anim.slide_in_right ); fm.replace( R.id.fragCont, f1 ); fm.addToBackStack( null ); fm.commit(); Button btn = ( Button ) findViewById( R.id.btn ); btn.setOnClickListener( new View.OnClickListener() { @Override public void onClick( View v ) { fm = getSupportFragmentManager().beginTransaction(); fm.setCustomAnimations( R.anim.slide_in_left, R.anim.slide_in_right ); if ( f1.isVisible() ) { fm.replace( R.id.fragCont, f2 ); } else { fm.replace( R.id.fragCont, f1 ); } fm.commit(); } } ); } }
Ответы
Ответ 1
Судя по всему, FragmentTransaction из библиотеки поддержки ( android.support.v4.app.FragmentTransaction ) работают только с ресурсами из каталога anim, начиная с версии Android 3.1 XML ресурсы анимации должны размещаться в каталоге animator, с которыми не работает android.support.v4.app.FragmentTransaction. Для работы с этими ресурсами необходимо использовать стандартный android.app.FragmentTransaction. Поменял классы фрагментов на android.app.* и все заработало.
Комментариев нет:
Отправить комментарий