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

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/bg_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/remind_dialog_port" >

    <Button
        android:id="@+id/remind_right_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="30dp"
        android:text="确定"
         />

</RelativeLayout>

在Activity中调用:

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值