如何向BottomSheetDialogFragment添加动画

Vij*_*jay 4 android android-animation bottom-sheet

我有一个BottomSheetDialogFragment,其中有两个按钮,当我点击任何按钮时,会调用dismiss()方法.有没有办法让BottomSheetDialogFragment动画化.我想让它显示一个持续时间为1000毫秒的慢速滑动动画.

示例代码

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

小智 10

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

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

DialogAnimation可以用这样的样式定义

<style name="DialogAnimation">
    <item name="android:windowEnterAnimation">@anim/slide_up</item>
    <item name="android:windowExitAnimation">@anim/slide_down</item>
</style>
Run Code Online (Sandbox Code Playgroud)

此外,slide_up和slide_down将是您所需动画的实现.你可以在网上找到相同的例子.

  • 我添加了 slide_up 和 down 动画。但似乎持续时间不起作用。我还添加了 1500 毫秒的持续时间 **slide_down.xml** `&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;translate xmlns:android="http://schemas.android.com/ apk/res/android" android:duration="500" android:fromYDelta="100%p" android:toYDelta="0%p" /&gt;` (3认同)