Ich habe meine eigenen Animationen für das Dialogfeld Fenster eingeben, aber es wird nicht ausgelöst, wenn ich .show() zum ersten Mal nach der Aktivität erstellt.DialogFragment enter Animation nicht feuert bei der ersten Show
unter Sie Am gif kann die erste Mal Animation sehen ist Drop-Down und es nur zweites Mal Folie nach oben, die ich gesetzt.
DialogFragment:
public class DateChooseDialog extends DialogFragment {
public DateChooseDialog() {
// Required empty public constructor
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(STYLE_NORMAL, R.style.DialogFullScreen);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.dialog_date_choose, container);
}
@Override
public void onResume() {
WindowManager.LayoutParams params = getDialog().getWindow().getAttributes();
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.gravity = Gravity.BOTTOM;
params.windowAnimations = R.style.DialogSlideAnimation;
getDialog().getWindow().setAttributes(params);
super.onResume();
}
}
Animationen:
<style name="DialogSlideAnimation" parent="Theme.AppCompat.Dialog">
<item name="android:windowEnterAnimation">@anim/slide_up</item>
<item name="android:windowExitAnimation">@anim/slide_down</item>
</style>
<!-- slide_up -->
<translate
android:duration="@android:integer/config_shortAnimTime"
android:fromYDelta="0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toYDelta="100%"
/>
<!-- slide_down -->
<translate
android:duration="@android:integer/config_shortAnimTime"
android:fromYDelta="0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toYDelta="100%"
/>
Dies ist, wie ich zeigen Dialog:
DateChooseDialog dateChooseDialog = new DateChooseDialog();
dateChooseDialog.show(getFragmentManager(), "date_choose");