Анимация для кнопки «Назад» в диалоговом окне

#java #android

#java #Android

Вопрос:

У меня есть класс, который расширяет DialogFragment, и я хотел бы добавить анимацию, когда пользователь нажимает кнопку «Назад» из этого фрагмента

 public class myClass extends DialogFragment{

    private void myAnimation(){
         // code here for animation...
    }
}
 

Как я могу вызвать myAnimation(), когда пользователь нажимает кнопку «Назад» из этого фрагмента?

Ответ №1:

Есть много анимаций, которые вы можете выбрать здесь, посмотрите ниже:

     <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:interpolator="@android:anim/linear_interpolator">
   <translate
       android:fromXDelta="0"
       android:toXDelta="100%p"
       android:duration="500"
       android:repeatCount="1"
       android:repeatMode="reverse"/> //File name is anim_translate.xml
</set>

final Animation animTranslate = AnimationUtils.loadAnimation(this, R.anim.anim_translate)

Button btnTranslate = (Button)findViewById(R.id.translate);

   btnTranslate.setOnClickListener(new Button.OnClickListener(){

  @Override
  public void onClick(View view) {
   view.startAnimation(animTranslate);
  }});
 

Взгляните на этот сайт AndroidAnimation

Ответ №2:

Вы можете добавить анимацию во FragmentTransaction с помощью метода setCustomAnimations (int enter, int exit, int popEnter, int popExit), который используется для отображения диалогового фрагмента (DialogFragment.show(транзакция, тег)).И вам также необходимо вызвать метод addToBackStack(tag), чтобы сделать анимацию popExit доступной.

Поэтому, когда вы нажмете кнопку «Назад», она автоматически воспроизведет назначенную вами анимацию (анимация popExit).

Проверьте метод setCustomAnimations здесь

Комментарии:

1. Должно ли это быть добавлено в метод onCreatView? И что вы подразумеваете под тегом? Кроме того, что такое tag (аргумент, который принимает addToBackStack)?

2. Это (метод FragmentTransaction) следует использовать в onCreate() activity для добавления фрагмента в макет программно. И когда вы добавляете фрагмент в макет activity программно, тег похож на уникальный идентификатор фрагмента, который вы можете получить в качестве экземпляра того, что вы добавили, используя FragmentManager.findFragmentByTag(строковый тег) в дальнейшем. В качестве тега можно использовать имя класса вашего пользовательского фрагмента.

3. Для получения более подробной информации о фрагменте, пожалуйста, обратитесь к этому руководству