package com.hdl.photovoltaic.widget; import android.app.Dialog; import android.content.Context; import android.view.Display; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.TextView; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.other.HdlCommonLogic; import com.hdl.photovoltaic.utils.UnitConversionUtils; import java.util.Objects; public class PermissionExplanationDialog { private Dialog portConflictPd; private volatile static PermissionExplanationDialog mInstance; public PermissionExplanationDialog() { } public static PermissionExplanationDialog getInstance() { if (mInstance == null) { synchronized (PermissionExplanationDialog.class) { if (mInstance == null) { mInstance = new PermissionExplanationDialog(); } } } return mInstance; } public void showPortConflictPdDialog(Context context, String description, String purpose) { if (portConflictPd != null) { try { portConflictPd.show(); } catch (Exception e) { } } else { Dialog dialog = new Dialog(context, R.style.video_dialog); View view = LayoutInflater.from(context).inflate(R.layout.dialog_permission_explanation, null); dialog.setContentView(view, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); WindowManager windowManager = Objects.requireNonNull(dialog.getWindow()).getWindowManager(); Display display = windowManager.getDefaultDisplay(); WindowManager.LayoutParams lp = dialog.getWindow().getAttributes(); lp.width = (int) (display.getWidth() * 0.9); //设置宽度 dialog.getWindow().setGravity(Gravity.TOP); lp.y = (int) UnitConversionUtils.dpToPx(context, 44); dialog.getWindow().setAttributes(lp); TextView tvDescription = view.findViewById(R.id.tv_description); tvDescription.setText(description); TextView tvPurpose = view.findViewById(R.id.tv_purpose); tvPurpose.setText(purpose); portConflictPd = dialog; portConflictPd.show(); } } public void dismiss() { try { if (portConflictPd != null) { portConflictPd.dismiss(); portConflictPd = null; } } catch (Exception e) { e.printStackTrace(); } } }