1

这是我所做的:

一个。FragmentDialog 的布局在内部膨胀onCreateView

` 查看布局 = inflater.inflate(R.layout.my_layout, null);

   layMain = (LinearLayout) layout.findViewById(R.id.layMain);           
   final Animation anim = AnimationUtils.loadAnimation(getActivity(),  R.anim.translate_from_bottom);
   layMain.startAnimation(anim);`

湾。创作动画效果很好。但是,我需要找到一种方法,在关闭时(例如当用户按下后退按钮时)运行动画,然后关闭 FragmentDialog

C。我不想使用android:windowEnterAnimation/android:windowExitAnimation因为并非所有设备在开发者菜单中都有动画,我需要在所有情况下运行动画。

所以基本上,我应该重写什么事件才能运行动画,并在动画结束时进行解除操作?

4

1 回答 1

1

如此处https://stackoverflow.com/a/8209841/379865所发现的,可行的解决方案非常简单:获取对话框并监听按键。

getDialog().setOnKeyListener(new OnKeyListener() {

                @Override
                public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
                    if (keyCode == KeyEvent.KEYCODE_BACK)
                    {
                        final Animation anim =
                                AnimationUtils.loadAnimation(getActivity(),
                                        R.anim.translate_to_bottom);
                        anim.setAnimationListener(new AnimationListener() {

                            @Override
                            public void onAnimationStart(Animation animation) {
                                // TODO Auto-generated method stub

                            }

                            @Override
                            public void onAnimationRepeat(Animation animation) {
                                // TODO Auto-generated method stub

                            }

                            @Override
                            public void onAnimationEnd(Animation animation) {
                                dismiss();

                            }
                        });
                        layMain.startAnimation(anim);
                        return true;
                    }
                    return false;
                }
            });
于 2013-06-12T21:25:18.723 回答