FragmentDialog为dismiss上的布局设置动画

时间:2013-06-12 18:41:27

标签: android android-dialogfragment

以下是我的工作:

一个。 FragmentDialog的布局在onCreateView

范围内膨胀

`View layout = 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

℃。我不想使用android:windowEnterAnimation / android:windowExitAnimation,因为并非所有设备都在Developer菜单中激活了动画,我需要在所有情况下运行动画。

所以基本上,为了运行动画我应该覆盖什么事件,在动画结束时要进行消除操作?

1 个答案:

答案 0 :(得分: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;
                }
            });