自定义Dialog和PopupWindow的具体实现代码

自定义Dialog类

     package com.jibaowang.chat.dialog;
    import android.app.Dialog;
    import android.content.Context;
    import android.view.Gravity;
    import android.view.View;
    import android.view.Window;
    import android.view.WindowManager;
    import android.widget.EditText;

    import com.jibaowang.chat.R;
    import com.jibaowang.chat.utils.DensityUtil;


    public class DialogJob implements View.OnClickListener {

    private Dialog mDialog;
    private EditText et_wirte;

    public DialogJob(Context context, IOnSexChanger onSexChanger){
        mIOnSexChanger = onSexChanger;
        initView(context);
    }

    public void initView(Context context){
        if(null ==context){
            return;
        }
        mDialog = new Dialog(context, R.style.dialog);
        mDialog.setCanceledOnTouchOutside(true);//设置点击弹窗外消失
        mDialog.setContentView(R.layout.dialog_job);
        mDialog.findViewById(R.id.iv_btn_cancle).setOnClickListener(this);
        mDialog.findViewById(R.id.iv_btn_submit).setOnClickListener(this);
        et_wirte=(EditText)mDialog.findViewById(R.id.et_wirte);

        Window win = mDialog.getWindow();   //给窗体设置大小
        win.getDecorView().setPadding(0, 0, 0, 0);
        WindowManager.LayoutParams lp = win.getAttributes();
        lp.width = WindowManager.LayoutParams.MATCH_PARENT;
        lp.height = DensityUtil.dp2px(context,160);
        win.setGravity(Gravity.CENTER);
        win.setAttributes(lp);
    }

    public void show(){
        if(null != mDialog){
            mDialog.show();
        }
    }

    public void dismiss(){
        if(null != mDialog && mDialog.isShowing()){
            mDialog.dismiss();
        }
    }

    @Override
    public void onClick(View v) {
        if(v.getId()==R.id.iv_btn_cancle){
            dismiss();
        }else if(v.getId()==R.id.iv_btn_submit){
            String strname = et_wirte.getText().toString();
            mIOnSexChanger.onJobChangerLitener(strname);
            dismiss();
        }
        dismiss();
    }

    private IOnSexChanger mIOnSexChanger;
    public interface IOnSexChanger{
        void onJobChangerLitener(String strname);
    }
    }

HeadPhotoPop类

    package com.jibaowang.chat.pop;

    import android.content.Context;
    import android.graphics.drawable.BitmapDrawable;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.LinearLayout;
    import android.widget.PopupWindow;

    import com.jibaowang.chat.R;


    /**
     * @author Tank
     * @time 2017/9/1  15:49
     * @desc 拍照选择照片弹框
     */

    public class HeadPhotoPop {

    private Context mContext;
    private PopupWindow mPopWindow = null;
    private OnPopSelectListener mListener;

    public HeadPhotoPop(final Context context, final OnPopSelectListener listener) {
        mContext = context;
        mListener = listener;
        mPopWindow = new PopupWindow(context);
        View view = LayoutInflater.from(context).inflate(R.layout.pop_headphoto, new LinearLayout(context), false);
        mPopWindow.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
        mPopWindow.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
        mPopWindow.setBackgroundDrawable(new BitmapDrawable());
        mPopWindow.setFocusable(true);
        mPopWindow.setOutsideTouchable(true);
        mPopWindow.setContentView(view);

        View.OnClickListener clickListener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dismiss();

                switch (v.getId()) {
                    case R.id.tv_pop_opencamare:
                        listener.onJumpCamare();
                        break;
                    case R.id.tv_pop_choicephoto:
                        listener.onChoicePhoto();
                        break;
                    case R.id.tv_pop_cancel:
                        dismiss();
                        break;
                    case R.id.v_view:
                        dismiss();
                        break;
                }
            }
        };

        view.findViewById(R.id.tv_pop_opencamare).setOnClickListener(clickListener);
        view.findViewById(R.id.tv_pop_choicephoto).setOnClickListener(clickListener);
        view.findViewById(R.id.tv_pop_cancel).setOnClickListener(clickListener);
        view.findViewById(R.id.v_view).setOnClickListener(clickListener);
    }

    public void dismiss() {
        mPopWindow.dismiss();
    }

    public void show(View v) {
        mPopWindow.showAtLocation(v, Gravity.BOTTOM, 0, 0);
    }

    public interface OnPopSelectListener {
        void onJumpCamare();

        void onChoicePhoto();

    }
    }
    <!--dialog样式-->
    <style name="dialog" parent="@android:style/Theme.Dialog" tools:ignore="ResourceName">
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
    </style>

猜你喜欢

转载自blog.csdn.net/qq_34581102/article/details/80378206