记录一下,自定义AlertDialog的父类,简单方便

1.主要代码:

public abstract class CommonConfirmBaseDialog extends AlertDialog {

    //    protected Context mContext;
    protected WeakReference weakReference;
    protected View mContentView;
    protected TextView tvCancel;
    protected TextView tvConfirm;
    private FrameLayout flContainer;

    protected View mCustomView;
    public ImageView iv_colse;

  protected CommonConfirmBaseDialog(Context context) {
        super(context, R.style.dialog_bond);
        if (context instanceof Application)
            getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
//        mContext = context;
        weakReference = new WeakReference<>(context);
    }

  protected CommonConfirmBaseDialog(Context context) {
        super(context, R.style.dialog_bond);
        if (context instanceof Application)
            getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
//        mContext = context;
        weakReference = new WeakReference<>(context);
    }

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mContentView = LayoutInflater.from(obtainContext()).inflate(R.layout.layout_common_confirm_base_dialog, null);
        initViews();
        Window window = getWindow();
        window.getDecorView().setPadding(0, 0, 0, 0);
 WindowManager.LayoutParams lp = window.getAttributes();
        lp.gravity = Gravity.CENTER;
//        lp.width = WindowManager.LayoutParams.WRAP_CONTENT;
        lp.width = getScreenWidth() - dp2px(66);
        lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
   window.setAttributes(lp);
        setCancelable(false);
        setCanceledOnTouchOutside(false);
        setContentView(mContentView);
    }

    private void initViews() {
        flContainer = (FrameLayout) mContentView.findViewById(R.id.fl_container);
        iv_colse = (ImageView) mContentView.findViewById(R.id.iv_colse);
        tvCancel = (TextView) mContentView.findViewById(R.id.tv_cancel);
  tvConfirm = (TextView) mContentView.findViewById(R.id.tv_confirm);
        tvConfirm.setText("确定");
         tvCancel.setText("取消");
 mCustomView = customView();
        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
        params.gravity = Gravity.CENTER_HORIZONTAL;
        mCustomView.setLayoutParams(params);
   if (mCustomView != null) {
            flContainer.addView(mCustomView);
        }
        iv_colse.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dismiss();
            }
        });
  tvConfirm.setOnClickListener(v -> {
            dismiss();
            if (mAction != null)
                mAction.confirm(this);
        });
        tvCancel.setOnClickListener(v -> {
            dismiss();
            if (mAction != null)
                mAction.cancel(this);
        });
        bindEvent();
    }

  tvConfirm.setOnClickListener(v -> {
            dismiss();
            if (mAction != null)
                mAction.confirm(this);
        });
        tvCancel.setOnClickListener(v -> {
            dismiss();
            if (mAction != null)
                mAction.cancel(this);
        });
        bindEvent();
    }

 public CommonConfirmBaseDialog cancelText(String text) {
        tvCancel.setText(text);
        return this;
    }
    public CommonConfirmBaseDialog action(ConfrimAction action) {
        mAction = action;
        return this;
    }
 public static interface ConfrimAction {
        void confirm(CommonConfirmBaseDialog baseDialog);
        void cancel(CommonConfirmBaseDialog baseDialog);
    }

    public CommonConfirmBaseDialog hideCance() {
        tvCancel.setVisibility(View.GONE);
        return this;
    }

 public CommonConfirmBaseDialog hideConfirm() {
        tvConfirm.setVisibility(View.GONE);
        return this;
    }

    public CommonConfirmBaseDialog hideClose() {
        iv_colse.setVisibility(View.GONE);
        return this;
    }
}

2.布局文件:




 

    

 

  

  
    

3.代码中引用其他地方的方法:

  public static int getScreenWidth() {
        WindowManager wm = (WindowManager) Utils.getApp().getSystemService(Context.WINDOW_SERVICE);
        Point point = new Point();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            //noinspection ConstantConditions
            wm.getDefaultDisplay().getRealSize(point);
        } else {
            //noinspection ConstantConditions
            wm.getDefaultDisplay().getSize(point);
        }
        return point.x;
    }
 public static int dp2px( float dpVal) {
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpVal, InterpHone.getContext().getResources().getDisplayMetrics());
    }

4.styles.xml:

    

 

你可能感兴趣的:(android,dialog,随笔)