1.先看效果图 ,直接按照demo粘贴复制修改即可
2.主要类文件
public class UsualDialogger extends Dialog {
private final String TITLE;
private final String MESSAGE;
private final String CONFIRMTEXT;
private final String CANCELTEXT;
private final onConfirmClickListener ONCONFIRMCLICKLISTENER;
private final onCancelClickListener ONCANCELCLICKLISTENER;
public interface onConfirmClickListener {
void onClick(View view);
}
public interface onCancelClickListener {
void onClick(View view);
}
private UsualDialogger(@NonNull Context context, String title, String message, String confirmText, String cancelText,
onConfirmClickListener onConfirmClickListener, onCancelClickListener onCancelClickListener) {
super(context, R.style.MyUsualDialog);
this.TITLE = title;
this.MESSAGE = message;
this.CONFIRMTEXT = confirmText;
this.CANCELTEXT = cancelText;
this.ONCONFIRMCLICKLISTENER = onConfirmClickListener;
this.ONCANCELCLICKLISTENER = onCancelClickListener;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.usual_dialog);
setCanceledOnTouchOutside(false);
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(CANCELTEXT)) {
btnCancel.setText(CANCELTEXT);
}
btnConfirm.setOnClickListener(view -> {
if (ONCONFIRMCLICKLISTENER == null) {
throw new NullPointerException("clicklistener is not null");
} else {
ONCONFIRMCLICKLISTENER.onClick(view);
}
});
btnCancel.setOnClickListener(view -> {
if (ONCANCELCLICKLISTENER == null) {
throw new NullPointerException("clicklistener is not null");
} else {
ONCANCELCLICKLISTENER.onClick(view);
}
});
}
public UsualDialogger shown() {
show();
return this;
}
public static class Builder {
private String mTitle;
private String mMessage;
private String mConfirmText;
private String mCancelText;
private onConfirmClickListener mOnConfirmClickListener;
private onCancelClickListener mOnCcancelClickListener;
private Context mContext;
private Builder(Context context) {
this.mContext = context;
}
public Builder setTitle(String title) {
this.mTitle = title;
return this;
}
public Builder setMessage(String message) {
this.mMessage = message;
return this;
}
public Builder setOnConfirmClickListener(String confirmText, onConfirmClickListener confirmclickListener) {
this.mConfirmText = confirmText;
this.mOnConfirmClickListener = confirmclickListener;
return this;
}
public Builder setOnCancelClickListener(String cancelText, onCancelClickListener onCancelclickListener) {
this.mCancelText = cancelText;
this.mOnCcancelClickListener = onCancelclickListener;
return this;
}
public UsualDialogger build() {
return new UsualDialogger(mContext, mTitle, mMessage, mConfirmText, mCancelText,
mOnConfirmClickListener, mOnCcancelClickListener);
}
}
}
3.属性文件
style
<!-- 自定义dialog -->
<style name="MyUsualDialog" parent="android:style/Theme.Dialog">
<!--背景颜色及和透明程度-->
<item name="android:windowBackground">@android:color/transparent</item>
<!--是否去除标题 -->
<item name="android:windowNoTitle">true</item>
<!--是否去除边框-->
<item name="android:windowFrame">@null</item>
<!--是否浮现在activity之上-->
<item name="android:windowIsFloating">true</item>
<!--是否模糊-->
<item name="android:backgroundDimEnabled">true</item>
</style>
布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
>
<LinearLayout
android:layout_width="260dp"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/usual_dialog_shape"
android:orientation="vertical">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="15dp"
android:gravity="center"
tools:text="消息提示"
android:textColor="#38ADFF"
android:textSize="16sp" />
<TextView
android:id="@+id/tv_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:textColor="@color/gray2"
android:layout_gravity="center_horizontal"
tools:text="提示消息" />
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:layout_marginTop="15dp"
android:background="#E4E4E4" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="horizontal">
<Button
android:id="@+id/btn_cancel"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_weight="1"
android:background="@null"
android:gravity="center"
android:singleLine="true"
tools:text="No"
android:textColor="#7D7D7D"
android:textSize="16sp"
tools:ignore="RtlHardcoded" />
<View
android:layout_width="1px"
android:layout_height="match_parent"
android:background="#E4E4E4" />
<Button
android:id="@+id/btn_confirm"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginRight="10dp"
android:layout_weight="1"
android:background="@null"
android:gravity="center"
android:singleLine="true"
tools:text="Yes"
android:textColor="#38ADFF"
android:textSize="16sp"
tools:ignore="RtlHardcoded" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
drawable资源
usual_dialog_shape
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="@dimen/space_15" />
<solid android:color="#F8F8F9" />
</shape>
在activity的使用
private UsualDialogger usualDialogger;
usualDialogger = UsualDialogger.Builder(ClearAllActivity.this)
.setTitle("提示")
.setMessage("确定清除缓存吗?")
.setOnConfirmClickListener("确定", view1 -> {
})
.setOnCancelClickListener("取消", view12 -> {
if (usualDialogger != null) {
usualDialogger.dismiss();
}
}).build()
.shown();
按照以上步骤使用即可