2016-05-21 63 views
0

我爲對話框窗口設置了自己的動畫,但在我創建活動後第一次調用.show()時不會觸發。DialogFragment輸入動畫在第一次顯示時不會觸發

在下面的gif中,您可以看到第一次動畫下拉,並且只有第二次滑動時,我才設置。

enter image description here

DialogFragment

public class DateChooseDialog extends DialogFragment { 

    public DateChooseDialog() { 
     // Required empty public constructor 
    } 

    @Override 
    public void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setStyle(STYLE_NORMAL, R.style.DialogFullScreen); 
    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, 
          @Nullable Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.dialog_date_choose, container); 
    } 

    @Override 
    public void onResume() { 
     WindowManager.LayoutParams params = getDialog().getWindow().getAttributes(); 
     params.width = WindowManager.LayoutParams.MATCH_PARENT; 
     params.gravity = Gravity.BOTTOM; 
     params.windowAnimations = R.style.DialogSlideAnimation; 
     getDialog().getWindow().setAttributes(params); 
     super.onResume(); 
    } 
} 

動畫

<style name="DialogSlideAnimation" parent="Theme.AppCompat.Dialog"> 
    <item name="android:windowEnterAnimation">@anim/slide_up</item> 
    <item name="android:windowExitAnimation">@anim/slide_down</item> 
</style> 

<!-- slide_up --> 
<translate 
    android:duration="@android:integer/config_shortAnimTime" 
    android:fromYDelta="0" 
    android:interpolator="@android:anim/accelerate_interpolator" 
    android:toYDelta="100%" 
    /> 

<!-- slide_down --> 
<translate 
    android:duration="@android:integer/config_shortAnimTime" 
    android:fromYDelta="0" 
    android:interpolator="@android:anim/accelerate_interpolator" 
    android:toYDelta="100%" 
    /> 

我這是怎麼顯示對話框

DateChooseDialog dateChooseDialog = new DateChooseDialog(); 
dateChooseDialog.show(getFragmentManager(), "date_choose"); 

回答

1

問題是所有關於鍵盤。它調整了整個窗口的大小,當鍵盤消失時,滑動下來的動畫,整個窗口通過滑下來調整它自己。

請將此行添加到您的清單。

<activity (Your current activity) 
    ... 
    android:windowSoftInputMode="adjustPan"> 
</activity> 

使用這些行,您的鍵盤將覆蓋窗口並且不會調整大小。 下一個challange是檢測鍵盤打開,如果需要延遲動畫。

祝你好運

相關問題