工具类
/**
* Author yifan.li
*
* @date 2025/11/19 16:29
* @description dialog工具类
*/
public class DialogUtils {
private static final String TAG = "DialogUtils";
private static DialogUtils instance;
private FaceUserRemoveDialog faceUserRemoveDialog;
private DialogUtils() {
}
public static DialogUtils getInstance() {
if (instance == null) {
instance = new DialogUtils();
}
return instance;
}
/**
* 删除人脸用户dialog
*
* @param context 上下文
* @param accountId 人脸注册用户
*/
public void showFaceUserRemoveDialog(Context context, String accountId) {
faceUserRemoveDialog = new FaceUserRemoveDialog(context, accountId);
faceUserRemoveDialog.show();
}
}
/**
* Author yifan.li
*
* @date 2025/11/19 16:33
* @description 删除人脸用户dialog
*/
public class FaceUserRemoveDialog extends Dialog implements View.OnClickListener {
private static final String TAG = FaceUserRemoveDialog.class.getSimpleName();
private Context mContext;
private ImageView close;
private TextView content;
private TextView okButton;
private TextView cancelButton;
private RelativeLayout mRootLayout;//根布局
private String accountId;
public FaceUserRemoveDialog(Context context, String accountId) {
super(context, R.style.DialogTheme);
this.mContext = context;
this.accountId = accountId;
initView();
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate is called");
setContentView(R.layout.dialog_face_user_remove);
if (getWindow() != null) {
getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
// 设置窗口属性
WindowManager.LayoutParams params = getWindow().getAttributes();
params.dimAmount = 0; // 设定蒙层透明度为0
params.flags &= ~WindowManager.LayoutParams.FLAG_DIM_BEHIND; // 禁用背景蒙层
getWindow().setAttributes(params);
}
// getWindow().setBackgroundDrawableResource(R.color.color_dialog_mask);
WindowManager.LayoutParams params = this.getWindow().getAttributes();
// Uncomment and modify the following lines to adjust dialog size
params.width = WindowManager.LayoutParams.MATCH_PARENT; // or a specific dp size
params.height = WindowManager.LayoutParams.MATCH_PARENT; // or a specific dp size
this.getWindow().setAttributes(params);
//初始化界面控件
initView();
//初始化界面数据
initData();
//初始化界面控件的事件
initEvent();
initListener();
}
private void initData() {
Log.i(TAG, "initData");
}
@SuppressLint("ClickableViewAccessibility")
private void initEvent() {
mRootLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
float x = motionEvent.getX();
float y = motionEvent.getY();
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN &&
(x > (610 + 700) || x < 610 ||
y < 233 || y > (233 + 390))) {
Log.i("Dialog onTouchEvent", "TrailModeDialog 点击外部关闭弹窗 onTouchEvent" + motionEvent);
dismiss();
}
return FaceUserRemoveDialog.super.onTouchEvent(motionEvent);
}
});
}
private void initView() {
Log.i(TAG, "initView");
mRootLayout = findViewById(R.id.rl_delete_account_dialog);
close = findViewById(R.id.iv_close);
content = findViewById(R.id.dialog_content);
okButton = findViewById(R.id.btn_confirm);
cancelButton = findViewById(R.id.btn_cancel);
}
private void initListener() {
Log.i(TAG, "initListener");
okButton.setOnClickListener(this);
cancelButton.setOnClickListener(this);
}
/**
* 设置内容
*
* @param contentText
*/
public void setContent(String contentText) {
if (content != null) {
content.setVisibility(View.VISIBLE);
content.setText(contentText);
} else {
content.setVisibility(View.GONE);
}
}
@Override
public void onClick(View v) {
int id = v.getId();
Log.i(TAG, "onClick id = " + id);
if (id == R.id.btn_confirm) {
UserAccountJsonManager.getInstance().deleteFaceUser(accountId);
this.dismiss();
} else if (id == R.id.btn_cancel) {
this.dismiss();
}else if (id == R.id.iv_user_face_delete) {
this.dismiss();
}
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "onStop: ");
}
/**
* 切换主题
*/
@SuppressLint("UseCompatLoadingForDrawables")
public void themeRefreshView() {
Log.d(TAG, "themeRefreshView");
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rl_delete_account_dialog"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="@dimen/custom_dialog_width"
android:layout_height="@dimen/custom_dialog_height"
android:layout_centerInParent="true"
android:background="@drawable/custom_dialog_bg"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_close"
android:layout_width="@dimen/dimen_64"
android:layout_height="@dimen/dimen_64"
android:layout_alignParentTop="true"
android:layout_marginStart="@dimen/dimen_48"
android:layout_marginTop="48dp"
android:src="@drawable/ic_close" />
<TextView
android:id="@+id/dialog_content"
android:layout_width="wrap_content"
android:layout_height="@dimen/dimen_44"
android:layout_below="@+id/iv_close"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/dimen_72"
android:gravity="center"
android:text="@string/confirm_delete_account"
android:textColor="@color/white"
android:textSize="@dimen/dimen_36" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="@dimen/dimen_110"
android:layout_below="@+id/dialog_content"
android:layout_marginStart="@dimen/dimen_66"
android:layout_marginTop="@dimen/dimen_102"
android:orientation="horizontal">
<Button
android:id="@+id/btn_confirm"
style="@style/custom_confirm_button"
android:text="@string/btn_confirm" />
<Button
android:id="@+id/btn_cancel"
style="@style/custom_cancel_button"
android:layout_marginStart="@dimen/dimen_80"
android:text="@string/btn_cancel" />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
最终效果如下:


被折叠的 条评论
为什么被折叠?



