如何将动画添加到BottomSheetDialogFragment

14

我有一个BottomSheetDialogFragment,其中有两个按钮,当我点击任何一个按钮时会调用dismiss()方法。是否有一种方法可以为BottomSheetDialogFragment添加动画?我希望它显示一个持续1000ms的缓慢向下滑动的动画。

示例代码

   signin.findViewById(R.id.signin_button_using).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            callback.onClickSignInEmail();
            dismiss();
        }
    })

请参考以下链接:https://dev59.com/N2Ij5IYBdhLWcg3w6JHU - Pritesh Patel
@pritesh 的 onClickSignInEmail() 方法会带我们到一个新的片段。如果你正确理解了 BottomSheetDialogFragment,它使用 dismiss() 来结束底部对话框,而你提供的文章并没有帮助。 - Vijay
1个回答

38

在扩展了BottomSheetDialogFragment的片段中,尝试像这样覆盖此方法

@Override
public void onActivityCreated(Bundle arg0) {
    super.onActivityCreated(arg0);
    getDialog().getWindow()
    .getAttributes().windowAnimations = R.style.DialogAnimation;
}

DialogAnimation可以在样式中定义,如下所示

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

另外,slide_up和slide_down将是您所需动画的实现。 您可以在网络上找到很多相同的示例。


5
我已添加了上下滑动的动画,但似乎持续时间无效。我还增加了1500毫秒的持续时间。slide_down.xml - Vijay
示例幻灯片动画链接 链接 - Vijay
1
这将使整个窗口动画化,但可见部分——底部表单对话框——通常比窗口小得多(剩余空间是透明的),因此会出现一个延迟,在此期间您只是在背景上滑动透明视图。打开开发人员设置中的“显示布局边界”以查看其效果。我认为你应该动画化视图。还不确定如何实现;正在研究中。 - Nolan Amy
有人能帮忙吗?我正在尝试在退出时动画化BottomsheetDialogFragment。 - shyam.y

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接