前言:
網(wǎng)上說(shuō)了一堆好處鬓梅,我只說(shuō)自己深有體會(huì)的兩點(diǎn)吧
1.屏幕橫豎屏切換的時(shí)候惹想,彈框可以保存狀態(tài)
2.可以在popwindow中使用
使用步驟
1.創(chuàng)建繼承DialogFragment的dialogFragment類
public class CardDialogFragment extends DialogFragment {
public static CardDialogFragment newInstance() {
Bundle args = new Bundle();
CardDialogFragment fragment = new CardDialogFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void onStart() {
super.onStart();
Window window = getDialog().getWindow();
WindowManager.LayoutParams params = window.getAttributes();
params.gravity = Gravity.CENTER;
window.setAttributes(params);
window.setBackgroundDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.circle5_white));
window.setWindowAnimations(R.style.BottomDialog_Animation);
//設(shè)置邊距
DisplayMetrics dm = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
getDialog().getWindow().setLayout((int) (dm.widthPixels * 0.72), ViewGroup.LayoutParams.WRAP_CONTENT);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.dialog_live_user_card, container, false);
....
return view;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return super.onCreateDialog(savedInstanceState);
}
}
說(shuō)明:
onStart()中的方法是設(shè)置彈框的位置和背景的,詳細(xì)看注釋蛋铆。
注意:設(shè)置背景后,xml中的背景設(shè)置以及邊距才會(huì)生效逊脯。所以一般在onStart中設(shè)置背景為透明色
onCreateView()自定義的dialog實(shí)現(xiàn)级乍,適用于復(fù)雜的界面舌劳。
onCreateDialog()利用AlertDialog實(shí)現(xiàn),適用于簡(jiǎn)單的界面玫荣。
2.顯示
LiveUserCardDialogFragment fragment = LiveUserCardDialogFragment.newInstance();
fragment.show(getFragmentManager(),"");
3.監(jiān)聽(tīng)DialogFragemnt的onDismisslistener方法
- 當(dāng)前Activity繼承DialogInterface.OnDismissListener
- 重寫DialogFragment中的onDismiss方法
eg:
@Override
public void onDismiss(final DialogInterface dialog) {
super.onDismiss(dialog);
final Activity activity = getActivity();
if (activity instanceof DialogInterface.OnDismissListener) {
((DialogInterface.OnDismissListener) activity).onDismiss(dialog);
}
}