自定义Dialog,在点击事件里通过LayoutParams改变动画为什么没有立即生效?

我在自定义Dialog里实现了一个方法setAnim(),可以用来加载进入和消失的动画,实现如下:

public void setAnim(int aniXml){
    WindowManager.LayoutParams lp = getWindow().getAttributes();
    lp.windowAnimations = aniXml;
    getWindow().setAttributes(lp);
}

在Activity中使用该Dialog时设置了一个动画文件:

addBillDialog.setAnim(R.style.MyAnim_FromBottom);

此动画文件可以正常生效。

在Dialog内有一个按钮实现了点击监听,case块如下:

case R.id.tv_outlay:
    setAnim(R.style.MyAnim_TRIM);
    dismiss();
    break;

测试发现,点击此按钮时,消失动画并非设置的R.style.MyAnim_TRIM,而是Activity中设置的R.style.MyAnim_FromBottom。

将case块内的dismiss()注释掉,点击后通过其他方式让Dialog消失,比如点击空白处,此时的消失动画为点击事件里设置的TRIM,修改成功。

请问,为什么这个动画文件没有立即生效?如果想要立即生效,应该怎样做?

肆意先生
浏览 1254回答 0
0回答
打开App,查看更多内容
随时随地看视频慕课网APP