LayerDialog.java 3.36 KB
package com.wd.common.dialog;

import android.app.Dialog;
import android.content.Context;
import android.view.View;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;


import com.wd.common.interfaces.IDialogActionInterface;

import java.util.ArrayList;

/**
 * @author LiuKun
 * @date 2023/5/2  15:51
 * @Description:公共dialog
 */
public class LayerDialog extends Dialog {

    private ArrayList<IDialogActionInterface.OnShowListener> mShowList;

    private ArrayList<IDialogActionInterface.OnDismissListener> mDismissList;

    private String dialogTag;

    public LayerDialog(@NonNull Context context) {
        super(context);
    }

    public LayerDialog(@NonNull Context context, int themeResId) {
        super(context, themeResId);
    }

    protected LayerDialog(@NonNull Context context, boolean cancelable, @Nullable OnCancelListener cancelListener) {
        super(context, cancelable, cancelListener);
    }

    @Override
    public void setContentView(@NonNull final View view) {
        super.setContentView(view);
    }

    @Override
    public void setContentView(int layoutResID) {
        View viewChild = getLayoutInflater().inflate(layoutResID, null);
        setContentView(viewChild);
    }

    @Override
    public void show() {
        try {
//            if (getContext() instanceof Activity) {
//                if (((Activity) getContext()).isFinishing()){
//                    return;
//                }
//            }

            super.show();

            notifyShow();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void dismiss() {

        try {

            super.dismiss();

            notifyDismiss();
        } catch (Exception e) {
            e.printStackTrace();
        }
        clear();

    }

    public void addOnShowListener(IDialogActionInterface.OnShowListener listener) {
        if (listener == null) {
            return;
        }

        if (mShowList == null) {
            mShowList = new ArrayList<>();
        }

        mShowList.add(listener);
    }

    public void addOnDismissListener(IDialogActionInterface.OnDismissListener listener) {
        if (listener == null) {
            return;
        }

        if (mDismissList == null) {
            mDismissList = new ArrayList<>();
        }

        mDismissList.add(listener);
    }

    /**
     * 显示
     */
    private void notifyShow() {

        if (mShowList != null) {
            for (IDialogActionInterface.OnShowListener listener : mShowList) {
                listener.onShow(LayerDialog.this);
                mShowList.remove(listener);
            }
        }
    }

    /**
     * 隐藏
     */
    private void notifyDismiss() {

        if (mDismissList != null) {
            for (IDialogActionInterface.OnDismissListener listener : mDismissList) {
                listener.onDismiss(LayerDialog.this);
                mDismissList.remove(listener);
            }
        }
    }

    private void clear() {
        if (mDismissList != null) {
            mDismissList.clear();
            mDismissList = null;
        }

        if (mShowList != null) {
            mShowList.clear();
            mShowList = null;
        }
    }

    public String getDialogTag() {
        return dialogTag;
    }

    public void setDialogTag(String dialogTag) {
        this.dialogTag = dialogTag;
    }

}