2016-01-05 3 views
0

У меня есть диалоговое окно, как эти:Предотвратить Dialog анимации, когда активность прекращается

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(); 

Когда активность останавливается, диалог выхода анимация показана на главном экране, а когда активность возобновляется диалог возвращается в место должно быть.

Как предотвратить анимацию выхода при остановке Activity?

ответ

0

в вашей деятельности, где диалог попытайтесь поместить в отменить в OnPause

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

Спасибо, но я не хочу отменять диалог, он понадобится, если активность возобновится. –

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; 
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 является анимация находится в Рез \ аним.

    WindowExitAnimation - это анимация, которая является частью Android SDK.

Затем инициализировать ваш диалог:

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

или

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

Надеется, что это поможет!

+0

Спасибо, но это та же самая реализация, что и моя, поэтому я не вижу, как это ее решит. –

Смежные вопросы