DialogFragment 其实就是继承fragment,用Fragment的事物进行管理
首先在onCreate中指定DialogFragment 所对应的样式
setStyle(DialogFragment.STYLE_NO_FRAME, R.style.DialogStyle);
<style name="DialogStyle" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@color/white</item>
</style>
然后在onCreateView 中返回的是我们将要展示的布局
rootView = View.inflate(getContext(), R.layout.dialog_fragment,null);
final ViewTreeObserver viewTreeObserver = rootView.getViewTreeObserver();
boolean alive = viewTreeObserver.isAlive();
// 当一个视图树将要绘制时,所要调用的回调函数的接口类
// 增加监听是为了,加入DialogFragment的出场动画
viewTreeObserver.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
// this 就表示的这个接口的匿名实现类
rootView.getViewTreeObserver().removeOnPreDrawListener(this);
System.out.println("MyDialogFragment onPreDraw 33333333333");
if (circleAnimal != null){
circleAnimal.show(rootView);
}
return true;
}
});
在onstart方法中设置DialogFragment的宽高,然后设置初始化动画对象
@Override
public void onStart() {
super.onStart();
System.out.println("MyDialogFragment onStart 44444444444444");
ViewGroup.LayoutParams params = getDialog().getWindow().getAttributes();