android如何设置全屏的DialogFragment以及自定义提示框支持横竖屏显示

DialogFragment是Android3.0引入的,也是谷歌官方推荐用来创建对话框的类。

DialogFragment相对与Dialog的最大优点是在手机配置变化,导致Activity需要重新创建时,例如旋屏,基于DialogFragment的对话框将会由FragmentManager自动重建,然而基于Dialog实现的对话框则会消失。

实现标题内容的代码如下,代码中已经标注了详细的注释:

import android.app.DialogFragment;
import android.content.Context;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.RelativeLayout;

public class FullScreenDialogFragment extends DialogFragment {

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {

		//去掉dialog的标题栏
		getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
		View view = inflater.inflate(R.layout.fragment_layout, container,
				false);

		Button btn = (Button) view.findViewById(R.id.remind_right_button);
		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				getDialog().dismiss();
			}

		});

		/**
		 *通过屏幕方向来切换相应的图片
		 */
		RelativeLayout relativeLayout = (RelativeLayout) view
				.findViewById(R.id.bg_layout);
		if (!isScreenOriatationPortrait(getActivity())) {
			relativeLayout.setBackgroundResource(R.drawable.remind_dialog);
		}
		return view;
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		//配置Dialog全屏
		setStyle(DialogFragment.STYLE_NORMAL,
				android.R.style.Theme_Black_NoTitleBar_Fullscreen);
	}

	/**
	 * 判断屏幕是否是竖屏
	 * @param context
	 * @return
	 */
	public static boolean isScreenOriatationPortrait(Context context) {
		return context.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT;
	}

}


R.layout.fragment_layout.xml




    

在Activity中调用:

FullScreenDialogFragment fullScreenDialogFragment = new FullScreenDialogFragment();
fullScreenDialogFragment.show(getFragmentManager(), "FullScreenDialogFragment");



你可能感兴趣的:(android如何设置全屏的DialogFragment以及自定义提示框支持横竖屏显示)