......
}
public Builder newBuilder() {
return new Builder(this);
}
//Builder类
public static final class Builder {
Dispatcher dispatcher;
...
int pingInterval;
public Builder() {
dispatcher = new Dispatcher();
protocols = DEFAULT_PROTOCOLS;
...
}
Builder(OkHttpClient okHttpClient) {
this.dispatcher = okHttpClient.dispatcher;
this.proxy = okHttpClient.proxy;
...
}
...
//最后创建的是OkHttpClient类的对象
public OkHttpClient build() {
return new OkHttpClient(this);
}
}
}
接下来自己写个创建模式的弹出框吧,我实现了一个通用的dialog:
public class CommonAlertDialog extends Dialog {
private final String TITLE;//题目
private final String MESSAGE;//信息
private final String CONFIRMTEXT;//确认文字
private final String CANCLETEXT;//取消文字
private final OnCancleClickListener onCancleClickListener;//取消的点击事件
private final OnConfirmClickListener onConfirmClickListener;//确认的点击事件
public interface OnConfirmClickListener{
void onClick(View view);
}
public interface OnCancleClickListener{
void onClick(View view);
}
//构造方法,其实这儿可以直接传一个builder过来的,就像OKHttp的构造方法一样
private CommonAlertDialog(@NonNull Context context, String TITLE, String MESSAGE, String CONFIRMTEXT, String CANCLETEXT,
OnCancleClickListener onCancleClickListener, OnConfirmClickListener onConfirmClickListener) {
super(context,R.style.AlertDialogUtil);
this.TITLE = TITLE;
this.MESSAGE = MESSAGE;
this.CONFIRMTEXT = CONFIRMTEXT;
this.CANCLETEXT = CANCLETEXT;
this.onCancleClickListener = onCancleClickListener;
this.onConfirmClickListener = onConfirmClickListener;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_common_dialog);
initView();
}
public static Builder Builder(Context context){
return new Builder(context);
}
private void initView() {
Button btnConfirm = findViewById(R.id.btn_confirm);
Button btnCancel = findViewById(R.id.btn_cancel);
TextView tvTitle = findViewById(R.id.tv_title);
TextView tvMessage = findViewById(R.id.tv_message);
if (!TextUtils.isEmpty(TITLE)) {
tvTitle.setText(TITLE);
}
if (!TextUtils.isEmpty(MESSAGE)) {
tvMessage.setText(MESSAGE);
}
if (!TextUtils.isEmpty(CONFIRMTEXT)) {
btnConfirm.setText(CONFIRMTEXT);
}
if (!TextUtils.isEmpty(CANCLETEXT)) {
btnCancel.setText(CANCLETEXT);
}
btnConfirm.setOnClickListener(v -> {
if(null != onConfirmClickListener){
onConfirmClickListener.onClick(v);
}
dismiss();
});
btnCancel.setOnClickListener(v -> {
if(null != onCancleClickListener){
onCancleClickListener.onClick(v);
}
dismiss();
});
}
public CommonAlertDialog shown(){
show();
return this;
}
//创建Builder类
public static class Builder{
private String mTitle;
private String mMessage;
private String mConfirmText;
private String mCancelText;
private OnConfirmClickListener mOnConfirmClickListener;
总结
本文讲解了我对Android开发现状的一些看法,也许有些人会觉得我的观点不对,但我认为没有绝对的对与错,一切交给时间去证明吧!愿与各位坚守的同胞们互相学习,共同进步!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!