关于显示DialogFragment时候,如何自定义动画?
主要是用这么一句dialog.getWindow().getAttributes().windowAnimations = R.style.dialogWindowAnim;
具体的可以看下面的代码。
public class MyDialog extends DialogFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = new Dialog(getActivity(), R.style.wheel_style);
View view = LayoutInflater.from(getActivity()).inflate(
R.layout.show_pick_view_frag, null);
dialog.getWindow().getAttributes().windowAnimations = R.style.dialogAnim;
dialog.setContentView(view);
return dialog;
}
}
里面需要用到的dialogAnim
如下
<style name="dialogAnim" mce_bogus="1" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/dialog_push_in</item>
<item name="android:windowExitAnimation">@anim/dialog_push_out</item>
</style>
对应的两个动画如下
dialog_push_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromYDelta="100%p"
android:toYDelta="0%p" />
<alpha
android:duration="@android:integer/config_mediumAnimTime"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
dialog_push_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromYDelta="0%p"
android:toYDelta="100%p" />
<alpha
android:duration="@android:integer/config_mediumAnimTime"
android:fromAlpha="1.0"
android:toAlpha="0.3" />
</set>
这样之后,就可以让我们的dialog从下面冒出来,取消的时候往下面跑.