我想实现简单的任务 - 在取消对话之前,我想根据我的逻辑设置不同的关闭动画(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();
}
}
);
}
答案 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;