Android DialogFragment使用之基类封装

 更新时间:2023年09月18日 14:53:43   作者:motosheep  
这篇文章主要介绍了Android DialogFragment使用之基类封装示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

关于安卓DialogFragment基类封装

对于DialogFragment,在androidX 1.1.0后,已修复内存泄漏

本文内容较短,直接上干货,核心代码如下:

/**
 * FileName: BaseDialogFragment
 * Author: lzt
 * Date: 2022/8/30 17:33
 * 注意dialog fragment版本,1.1.0以上已修复内存泄漏
 */
public abstract class BaseDialogFragment extends DialogFragment {
    private int DEFAULT_WIDTH = WindowManager.LayoutParams.MATCH_PARENT;//宽
    private int DEFAULT_HEIGHT = WindowManager.LayoutParams.WRAP_CONTENT;//高
    private int DEFAULT_GRAVITY = Gravity.BOTTOM;//位置
    private boolean mCancelable = true;//默认可取消
    private boolean mCanceledOnTouchOutside = true;//默认点击外部可取消
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View mView = inflater.inflate(getLayoutId(), container, false);
        initViews(mView);
        return mView;
    }
    @NonNull
    @Override
    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
        Dialog mDialog = super.onCreateDialog(savedInstanceState);
        if (null != mDialog) {//初始化
            mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
            mDialog.setCanceledOnTouchOutside(mCanceledOnTouchOutside);
            mDialog.setCancelable(mCancelable);
            Window window = mDialog.getWindow();
            if (null != window) {
                window.getDecorView().setPadding(0, 0, 0, 0);
                window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
                WindowManager.LayoutParams lp = window.getAttributes();
                lp.width = DEFAULT_WIDTH;
                lp.height = DEFAULT_HEIGHT;
                lp.gravity = DEFAULT_GRAVITY;
                lp.windowAnimations = android.R.style.Animation_InputMethod;
                window.setAttributes(lp);
            }
            mDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
                @Override
                public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
                    return !mCancelable;
                }
            });
        }
        return mDialog;
    }
    /**
     * 设置位置
     * @param gravity
     */
    public void setGravity(int gravity) {
        DEFAULT_GRAVITY = gravity;
    }
    /**
     * 设置宽
     * @param width
     */
    public void setWidth(int width) {
        DEFAULT_WIDTH = width;
    }
    /**
     * 设置高
     * @param height
     */
    public void setHeight(int height) {
        DEFAULT_HEIGHT = height;
    }
    /**
     * 设置点击返回按钮是否可取消
     *
     * @param cancelable
     */
    public void setCancelable(boolean cancelable) {
        mCancelable = cancelable;
    }
    /**
     * 设置点击外部是否可取消
     *
     * @param canceledOnTouchOutside
     */
    public void setCanceledOnTouchOutside(boolean canceledOnTouchOutside) {
        mCanceledOnTouchOutside = canceledOnTouchOutside;
    }
    /**
     * 设置布局
     *
     * @return
     */
    protected abstract int getLayoutId();
    /**
     * 初始化Views
     *
     * @param v
     */
    protected abstract void initViews(View v);
}

以上就是Android DialogFragment使用之基类封装的详细内容,更多关于Android DialogFragment基类封装的资料请关注脚本之家其它相关文章!

相关文章

  • Android控件之Spinner用法实例分析

    Android控件之Spinner用法实例分析

    这篇文章主要介绍了Android控件之Spinner用法,以实例形式较为详细的分析了Spinner控件模拟下拉列表的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • React-Native中使用验证码倒计时的按钮实例代码

    React-Native中使用验证码倒计时的按钮实例代码

    这篇文章主要介绍了React-Native中使用验证码倒计时的按钮实例代码,具有一定的参考价值,有兴趣的可以了解一下
    2017-04-04
  • android检查手机和无线是否连接的方法

    android检查手机和无线是否连接的方法

    这篇文章主要介绍了android检查手机和无线是否连接的方法,以两种不同的方法实现了该功能,是Android程序开发中非常常见的实用技巧,需要的朋友可以参考下
    2014-10-10
  • android ListView结合xutils3仿微信实现下拉加载更多

    android ListView结合xutils3仿微信实现下拉加载更多

    本篇文章主要介绍了android ListView结合xutils3仿微信实现下拉加载更多,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Android控件PopupWindow模仿ios底部弹窗

    Android控件PopupWindow模仿ios底部弹窗

    这篇文章主要为大家详细介绍了Android控件PopupWindow仿ios底部弹窗效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Android实战之Cocos游戏容器搭建

    Android实战之Cocos游戏容器搭建

    这篇文章主要介绍了Android实战之Cocos游戏容器搭建,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-06-06
  • Android自定义组件获取本地图片和相机拍照图片

    Android自定义组件获取本地图片和相机拍照图片

    这篇文章主要为大家详细介绍了Android自定义组件获取本地图片和相机拍照图片的相关资料,非常炫酷的效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Android 暂停和恢复Activity

    Android 暂停和恢复Activity

    在正常的应用程序使用,前台activity有时会被其他可视化组件遮挡,从而 造成activity的暂停。例如,当一个半透明的activity打开时(如在一个风格对话框),以前的activity就暂停了。只要 activity仍然是部分可见,但目前没有获得焦点,它就依然处于暂停状态
    2016-03-03
  • Android 自定义View之倒计时实例代码

    Android 自定义View之倒计时实例代码

    这篇文章主要介绍了Android 自定义View之倒计时实例代码的相关资料,大多数app在注册的时候,都有一个获取验证码的按钮,点击后,访问接口,最终用户会收到短信验证码。为了不多次写这个获取验证码的接口,下面将它自定义成一个view,方便使用,需要的朋友可以参考下
    2017-04-04
  • Android Scroller实现弹性滑动效果

    Android Scroller实现弹性滑动效果

    这篇文章主要为大家详细介绍了Android Scroller实现弹性滑动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04

最新评论