#android #android_fragment #анимация #android_animation
Я хочу анимировать появление фрагмента. При чем чтобы он появлялся "сверху вниз". Мне частично удалось реализовать задумку, но проблема в том что сначала появляется место на экране под фрагмент, а только потом появляется сам фрагмент с анимацией. Как сделать одновременную анимацию появления места на экране и анимацию появления фрагмента? Вот что имею: Экран разметкиМетоды, запускающие анимацию private void calendarShow() { FragmentTransaction t = getSupportFragmentManager().beginTransaction(); t.setCustomAnimations(R.animator.calendar_show, R.animator.calendar_hide); t.replace(R.id.calendarView, mCalendar, CALENDAR_TAG); t.show(mCalendar); t.commit(); mCalendar.refreshView(); } private void calendarHide() { android.support.v4.app.FragmentTransaction t = getSupportFragmentManager().beginTransaction(); t.setCustomAnimations(R.animator.calendar_show, R.animator.calendar_hide); t.hide(getSupportFragmentManager().findFragmentByTag(CALENDAR_TAG)); t.commit(); } Анимации появления и исчезновения calendar_show.xml calendar_hide.xml
Ответы
Ответ 1
Попробуйте добавить AnimationListener для управления видимостью фрагмента: private void calendarShow() { FragmentTransaction t = getSupportFragmentManager().beginTransaction(); Animation anim = AnimationUtils.loadAnimation(this, R.animator.calendar_show); anim.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { //Сделайте фрагмент видимым - setVisibility(VISIBLE); } }); t.startAnimation(anim); t.replace(R.id.calendarView, mCalendar, CALENDAR_TAG); t.show(mCalendar); t.commit(); //Сделайте фрагмент невидимым - setVisibility(GONE); mCalendar.refreshView(); }
Комментариев нет:
Отправить комментарий