2016-05-21 30 views
0

ダイアログウィンドウの入力用に独自のアニメーションを設定しましたが、アクティビティが作成された後初めて.show()を呼び出すと起動しません。DialogFragment最初の表示でアニメーションが起動しない

下のgifでは、最初のアニメーションがドロップダウンされ、2回目に設定したスライドアップのみが表示されます。

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は、必要に応じてキーボードを開いてアニメーションを遅らせるために開かれています。

ありがとうございました

関連する問題