2015-10-08 62 views
0

我想在創建活動後立即在自定義對話框中滑動。但每次對話都伴隨着活動。我想在創建活動後顯示對話框。 已嘗試在onCreate()onResumeonPostResume中創建對話框。slide in animantion onCreate android

創建對話框:

Dialog dialog = new Dialog(this, R.style.PauseDialog); 
     dialog.setTitle("Test Dialog Transition"); 
     dialog.show(); 

動畫風格:

<style name="PauseDialog" parent="@android:style/Theme.Dialog"> 
    <item name="android:windowAnimationStyle">@style/PauseDialogAnimation</item> 
</style> 

<style name="PauseDialogAnimation"> 
    <item name="android:windowEnterAnimation">@android:anim/slide_in_left</item> 
    <item name="android:windowExitAnimation">@android:anim/slide_out_right</item> 
</style> 
+0

看起來像你從下面這個答案代碼:http://stackoverflow.com/questions/4817014/animate-a-custom-dialog/5591827#5591827你確定你已經啓用了動畫您設備? –

+0

不只是這個答案也嘗試了其他幾個。是的,我的設備上有動畫。我可以看到slide_out動畫 –

回答

0

我能找到拖延過渡的最好方法是使用處理器。我用postDelayed()來延遲對話框的轉換。

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     Dialog dialog = new Dialog(MainActivity.this, R.style.PauseDialog); 
     dialog.setTitle("Test Dialog Transition"); 
     dialog.show(); 
    } 
}, 1000); 
0

更新的答案,包括一個布爾值,以確定是否我們已經所示的對話框又避免顯示多次。

這似乎工作正常。

當活動的當前窗口獲得或失去焦點時調用。這是此活動是否對用戶可見的最佳指標。

boolean mDialogShown = false; 

@Override 
public void onWindowFocusChanged(boolean hasFocus) 
{ 
    if(!mDialogShown) 
    { 
     mDialogShown = true; 

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

     dialog.setTitle("Test Dialog Transition"); 
     dialog.show(); 
    } 
    super.onWindowFocusChanged(hasFocus); 
} 
+0

這不是正確的方法,因爲即使在解除對話框之後對話框仍然可以重新創建。由於onWindowFocusChanged()會在對話框關閉後調用。 –

+0

將是一個問題,如果我們使用它的片段,特別是當同時加載多個fargments。 –