活动停止时阻止对话框动画

时间:2016-01-05 16:36:44

标签: android

我有一个如下对话框:

    final Dialog dialog = new Dialog(this, R.style.DialogSlideSideAnim);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.getWindow().setBackgroundDrawable(
            new ColorDrawable(android.graphics.Color.TRANSPARENT));
    dialog.setCanceledOnTouchOutside(false);
    dialog.setCancelable(false);
    dialog.setContentView(R.layout.some_dialog_layout);

    Window window = dialog.getWindow();
    window.setLayout(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    window.setGravity(Gravity.CENTER);

    dialog.show();

当活动停止时,对话框退出动画显示在主屏幕上,当活动恢复时,对话框返回到它应该的位置。

如何在活动停止时阻止退出动画?

3 个答案:

答案 0 :(得分:0)

在您的活动中,对话框尝试在暂停中取消

@Override 
public void onPause()
{
    dialog.cancel();
    super.onPause();
}

答案 1 :(得分:0)

static boolean isShow = false;

@Override 
public void onPause()
{
dialog.dismiss();
super.onPause();
}

@Override 
public void onResume()
{
if(isShow ){
dialog.show();
super.onResume();
}
}

//And where 
dialog.show();
isShow = true;

答案 2 :(得分:0)

<强> IMO

  1. 首先,关于对话框动画:如果你的设备动画设置被设置为“无动画”(设置→显示→动画),那么无论你做什么,对话框都不会被动画
  2. 其次,您可以使用样式更改对话框退出动画:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <style name="PauseDialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowAnimationStyle">@style/PauseDialogAnimation</item>
    </style>
    
    <style name="PauseDialogAnimation">
        <item name="android:windowEnterAnimation">@anim/spin_in</item>
        <item name="android:windowExitAnimation">@android:anim/slide_out_right</item>
    </style>
    

    windowEnterAnimation是一个位于res \ anim的动画。

    windowExitAnimation是一个动画,是Android SDK的一部分。

  3. 然后初始化对话框:

    Dialog dialog = new Dialog(this, R.style.PauseDialog);
    

    Dialog dialog = new Dialog(this);
    dialog.getWindow().getAttributes().windowAnimations = R.style.PauseDialogAnimation;
    

    希望这有帮助!