在运行时更改动画

时间:2011-10-01 22:38:13

标签: android

我想实现简单的任务 - 在取消对话之前,我想根据我的逻辑设置不同的关闭动画(getWindow()。getAttributes()。windowAnimations = ...)。例如,我在对话框上有2个按钮,如果先按下则我想向左滑动,如果按下第二个则向右滑动。我创建了一些样式文件,其中包含一些Android动画:windowExitAnimation和android:windowEnterAnimation,如果在自定义对话框构造函数中传递,它们都可以工作。但我无法覆盖代码中的windowAnimations,因为我不需要使用构造函数方法,因为我需要不同的动画。怎么做以及为什么这段代码不起作用?

        // close button
        _button_close = (ImageButton)findViewById(R.id.buttonClose);

        if (_button_close != null) 
        {
            _button_close.setOnClickListener(
                new Button.OnClickListener() 
                {  
                    public void onClick(View v)
                    {
                        // set animation
                        getWindow().getAttributes().windowAnimations = R.style.DialogSlideOutLeft;

                        // close form
                        dismiss();
                    }
                }
            );
        }   

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。 这是我的解决方案:`

        alertCheckIn = new Dialog(this);
        alertCheckIn.setTitle("Check-In");
        alertCheckIn.setContentView(textEntryView); //my custom dialog layout

        lpDialog = alertCheckIn.getWindow().getAttributes();
        lpDialog.windowAnimations = R.style.FadeInDropOutDialogAnimation;
        alertCheckIn.getWindow().setAttributes(lpDialog);

        alertCheckIn.show();

`

然后当我想切换动画时: `

        lpDialog.windowAnimations = R.style.FadeInSlideLeftOutDialogAnimation;
        alertCheckIn.getWindow().setAttributes(lpDialog);
        alertCheckIn.cancel();`

当:

private WindowManager.LayoutParams lpDialog;