DialogFragment使用方法

1、实现普通的dialog效果

新建一个类 继承AppCompatDialogFragment 并实现onCreateDialog方法

public class CustomDialog extends AppCompatDialogFragment {
   @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("提示")
                .setMessage("新建一个类 继承AppCompatDialogFragment 并实现onCreateDialog方法")
                .setPositiveButton("确定", null)
                .setNegativeButton("取消", null);
        return builder.create();
    }
}

使用方法

 CustomDialog dialog=new CustomDialog();
        dialog.show(getSupportFragmentManager(),"custom");//custom 设置一个tag

2、实现自定义的dialog

实现方法换了onCreateView

public class CustomDialog extends AppCompatDialogFragment {
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(DialogFragment.STYLE_NO_TITLE,R.style.dialogFull);//全屏显示
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.custom_dialog, null);//任意添加一个测试布局即可
    }

}

全屏显示

<style name="dialogFull" parent="Animation.AppCompat.Dialog">
        <item name="android:windowIsFloating">false</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:background">@android:color/transparent</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:colorBackgroundCacheHint">@null</item>
    </style>

3、顶部弹窗效果

public class TopDialog extends AppCompatDialogFragment {

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(DialogFragment.STYLE_NO_TITLE, R.style.dialogFull);//全屏dialog
    }

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

        return inflater.inflate(R.layout.top_dialog, container);
    }

    @Override
    public void onStart() {
        super.onStart();
        Window window = getDialog().getWindow();
        WindowManager.LayoutParams windowParams = window.getAttributes();
        windowParams.dimAmount = 0.0f;//Dialog外边框透明
        window.setLayout(windowParams.MATCH_PARENT, windowParams.WRAP_CONTENT); //高度自适应,宽度全屏
        windowParams.gravity = Gravity.TOP; //在顶部显示
        windowParams.windowAnimations = R.style.top_dialog_anim;
        window.setAttributes(windowParams);

    }
}
<style name="top_dialog_anim">
        <item name="android:windowEnterAnimation">@anim/top_dialog_in</item>
        <item name="android:windowExitAnimation">@anim/top_dialog_out</item>
    </style>
top_dialog_in
<?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%"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:toYDelta="0" />
</set>
top_dialog_out
<?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"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:toYDelta="-100%" />
</set>

取消弹窗

 getDialog().setCanceledOnTouchOutside(true);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值