BasePopWindow.java 2.26 KB
package com.sw.laryngoscope.popWindow;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.PopupWindow;

import androidx.annotation.IdRes;
import androidx.constraintlayout.widget.ConstraintLayout;

import com.sw.laryngoscope.R;

import butterknife.ButterKnife;

public abstract class BasePopWindow
        extends PopupWindow
        implements View.OnClickListener, View.OnTouchListener {

    public String TAG = "";
    protected Context mContext;
    protected ConstraintLayout rootView;

    protected View view_pop_empty;

    public View.OnLongClickListener
            longClickListener = v -> true;

    public BasePopWindow(Context context) {
        this.mContext = context;
        TAG = getClass().getSimpleName();

        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        rootView = (ConstraintLayout) inflater.inflate(
                getPopLayoutId(), null);

        setContentView(rootView);
        ButterKnife.bind(this, rootView);

        setWidth(mContext.getResources()
                .getDimensionPixelSize(R.dimen.dp_x_823));
        setHeight(mContext.getResources()
                .getDimensionPixelSize(R.dimen.dp_y_423));

        setOutsideTouchable(false);

        /*view_pop_empty = findViewById(R.id.view_pop_empty);
        if (view_pop_empty != null) {
            view_pop_empty.setOnClickListener(view -> onEmptySpaceClick());
            view_pop_empty.setOnLongClickListener(longClickListener);
        }*/

        init();
        setListener();
        setTouchInterceptor(this);
    }

    @Override
    public void showAtLocation(View parent, int gravity, int x, int y) {
        super.showAtLocation(parent, gravity, x, y);
    }

    @Override
    public void dismiss() {
        super.dismiss();
    }

    @Override
    public void onClick(View v) {

    }

    public abstract int getPopLayoutId();

    public abstract void init();

    public abstract void setListener();

    protected void onCloseClick() {
        dismiss();
    }

    protected void onEmptySpaceClick() {
        dismiss();
    }

    protected final <T extends View> T findViewById(@IdRes int id) {
        return rootView.findViewById(id);
    }

}