Установка фрагмента Android для входа и выхода из переходов?

Я пытаюсь установить переходы ввода и выхода для DialogFragment, который кажется достаточно прямым. Вот код из моего DrinkDetailActivity, который создает диалог:

fab.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { //create and display the dialog DialogFragment orderFragment = new OrderDrinkDialogFragment(); //set the slide transition for the fragment Transition dialSlide = new Slide(); dialSlide.setDuration(300); orderFragment.setEnterTransition(dialSlide); orderFragment.setExitTransition(dialSlide); orderFragment.show(getFragmentManager(), "order"); } }); 

И вот код из моего класса OrderDrinkDialogFragment:

 public class OrderDrinkDialogFragment extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(DrinkDetailActivity.activity); //set up the Linear Layout of the dialog LinearLayout layout = new LinearLayout(DrinkDetailActivity.activity); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); layout.setOrientation(LinearLayout.VERTICAL); layout.setLayoutParams(params); //set up the EditText view EditText nameField = new EditText(DrinkDetailActivity.activity); nameField.setHint(R.string.dialog_name_hint); //add the EditText view to the layout layout.addView(nameField, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); //set layout as the view of the dialog builder.setView(layout); return builder.create(); } } 

DrinkDetailActivity.activitythis просто this из экземпляра DrinkDetailActivity . По какой-то причине диалог не переходит, когда я show() его или когда он отклоняется, он просто появляется и выходит из вида. Этот урок помог мне разобраться в переходах активности для остальной части моего приложения, и я следил за теми же инструкциями для переходов фрагментов, как он говорит. Что я делаю не так?

Это сработало для меня. Моя анимация слайдов

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="@android:integer/config_mediumAnimTime" android:fromYDelta="100%" android:interpolator="@android:anim/accelerate_interpolator" android:toXDelta="0" /> </set> 

И моя анимация слайдов

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="@android:integer/config_mediumAnimTime" android:fromYDelta="0%p" android:interpolator="@android:anim/accelerate_interpolator" android:toYDelta="100%p" /> </set> 

В ваших стилях добавьте это

 <style name="DialogAnimation"> <item name="android:windowEnterAnimation">@anim/slide_up</item> <item name="android:windowExitAnimation">@anim/slide_down</item> </style> 

Теперь, наконец, в вашем onCreateDialog() фрагмента Dialog добавьте это

 public Dialog onCreateDialog(Bundle savedInstanceState) { final Dialog dialog = super.onCreateDialog(savedInstanceState); dialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; return dialog; } 

Вам нужно написать стиль для показа анимации в любом окне, например Dialog

 <style name="AnimDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowAnimationStyle">@style/DialogAnimation</item> </style> <style name="DialogAnimation"> <item name="android:windowEnterAnimation">@anim/fadein</item> <item name="android:windowExitAnimation">@anim/fadeout</item> </style> 

Для вашего диалога вам нужно создать экземпляр, например

 Dialog animatedDialog = new Dialog(MainActivity.this,R.style.AnimDialog); 

DialogFragment – это не только диалоговое окно, но и фрагмент. Подробнее о том, как его использовать, см. В разделе « Основной диалог» . Вы использовали onCreateDialog внутри фрагмента, который может быть причиной вашей проблемы. Таким образом, используйте onCreateView для создания диалогового окна фрагмента.

Надеюсь, этот ответ вам поможет.

Intereting Posts
Заблокировать состояние блокировки на Android Исключить Nexus 7 из поддерживаемых устройств Увольнение в всплывающем окне Android Android Draw9patch отсутствует? Как повернуть файл JPEG на Android без потери качества и получения размера файла? Синхронизация базы данных Android IntelliJ IDEA не происходит Ошибка метода отражения Android Поддерживает ли ormlite поддержку наследования? Что такое репо и почему Google использует его? Как я могу повторно подключить свое приложение при каждом открытии к тому же Bluetooth-устройству с низким энергопотреблением? Удалить последнюю кнопку приложения, как это сделано в приложении SureLock Существует ли ограничение на то, сколько разных приложений может опубликовать один разработчик на Android Market? Разница между XML SAX парсером, Pull parser & DOM Parser в android Не удалось найти явный класс активности {}; Объявили ли вы эту активность в своем AndroidManifest.xml Как использовать maven в андроид-студии