项目里用到的dialog越来越多,样式也各式各样,为了方便,所以就考虑写一个BaseDialog。
新建BaseDialog继承Dialog
public class BaseDialog extends Dialog {
public BaseDialog(Context context) {
super(context);
}
public BaseDialog(Context context, int themeResId) {
super(context, themeResId);
}
protected BaseDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
}
}
我们也仿造dialog的来设计,利用Builder模式
静态成员类(嵌套类)
public static class Builder {
private Context context;
private boolean cancelable = false;
private OnCancelListener cancelListener;
private int theme = R.style.commonDialog;
private CharSequence positionText;
private CharSequence negativeText;
private OnClickListener positiveListener;
private OnClickListener negativeListener;
private View centerView;
private CharSequence title;
private LayoutParams centerLP = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
private Map<String, View> viewMap;
}
public Builder(Context context) {
this.context = context;
viewMap = new HashMap<String, View>();
}
public Context getContext() {
return context;
}
public Builder setCancelable(boolean cancelable) {
this.cancelable = cancelable;
return this;
}
public Builder setCancelListener(OnCancelListener cancelListener) {
this.cancelListener = cancelListener;
return this;
}
public Builder setTheme(int theme) {
this.theme = theme;
return this;
}
public Builder setTitle(CharSequence title) {
this.title = title;
return this;
}
public Builder setTitle(int textId) {
this.title = getContext().getString(textId);
return this;
}
public Builder setCenterView(View centerView) {
this.centerView = centerView;
return this;
}
public Builder setCenterView(int resId) {
this.centerView = View.inflate(getContext(), resId, null);
return this;
}
public Builder setPositiveButton(int textId, OnClickListener listener) {
this.positionText = getContext().getString(textId);
this.positiveListener = listener;
return this;
}
public Builder setPositiveButton(CharSequence text, OnCl