From a1ac20d9cbe90b566bffe3ed39a6e07700c3248f Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期一, 19 六月 2023 10:30:06 +0800
Subject: [PATCH] Merge branch 'wjc'

---
 app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationInputDialog.java |  251 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 251 insertions(+), 0 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationInputDialog.java b/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationInputDialog.java
new file mode 100644
index 0000000..27ee316
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationInputDialog.java
@@ -0,0 +1,251 @@
+package com.hdl.photovoltaic.widget;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.text.method.HideReturnsTransformationMethod;
+import android.text.method.PasswordTransformationMethod;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.content.res.AppCompatResources;
+import androidx.constraintlayout.widget.ConstraintSet;
+
+import com.hdl.photovoltaic.R;
+import com.hdl.photovoltaic.databinding.LoadingConfirmInputBinding;
+import com.hdl.photovoltaic.utils.KeyboardStateObserverUtils;
+
+/**
+ * 杈撳叆纭妗�
+ */
+public class ConfirmationInputDialog extends Dialog {
+
+    public ConfirmationInputDialog(@NonNull Context context) {
+        super(context, R.style.Custom_AlertDialog);
+        this.mContext = context;
+    }
+
+    private final Context mContext;
+    private onNoOnclickListener noOnclickListener;//鍙栨秷鎸夐挳琚偣鍑讳簡鐨勭洃鍚櫒
+    private onYesOnclickListener yesOnclickListener;//纭畾鎸夐挳琚偣鍑讳簡鐨勭洃鍚櫒
+    private LoadingConfirmInputBinding viewBinding;
+    private String titleStr, yesStr, noStr;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        viewBinding = LoadingConfirmInputBinding.inflate(getLayoutInflater());
+        setContentView(viewBinding.getRoot());
+//        setCancelable(true);//绯荤粺鍚庨��鍙互鍙栨秷
+        //绌虹櫧澶勪笉鑳藉彇娑堝姩鐢�
+        setCanceledOnTouchOutside(false);
+        //鍒濆鍖栫晫闈㈡帶浠�
+        initView();
+        //鍒濆鍖栫晫闈㈡暟鎹�
+        initData();
+        //鍒濆鍖栫晫闈㈡帶浠剁殑浜嬩欢
+        initEvent();
+        //鍦ㄧ晫闈腑浣跨敤
+        KeyboardStateObserverUtils.getKeyboardStateObserver((Activity) mContext).setKeyboardVisibilityListener(new KeyboardStateObserverUtils.OnKeyboardVisibilityListener() {
+            @Override
+            public void onKeyboardShow(int h) {
+                ConstraintSet cs = new ConstraintSet();
+                cs.clone(viewBinding.loadingParentCl);
+//                (viewBinding.loadingConfirmationRl.getTop()-dip2px(h))
+
+                cs.connect(R.id.loading_confirmation_rl, ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM, px2dip(h));//
+                //搴旂敤绾︽潫
+                cs.applyTo(viewBinding.loadingParentCl);
+
+
+//                FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) viewBinding.loadingParentCl.getLayoutParams();
+//                lp.bottomMargin = px2dip(h);
+//                viewBinding.loadingParentCl.setLayoutParams(lp);
+
+
+            }
+
+            @Override
+
+            public void onKeyboardHide(int h) {
+                ConstraintSet cs = new ConstraintSet();
+                cs.clone(viewBinding.loadingParentCl);
+                cs.connect(R.id.loading_confirmation_rl, ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM, px2dip(h));//
+                //搴旂敤绾︽潫
+                cs.applyTo(viewBinding.loadingParentCl);
+            }
+
+        });
+
+
+    }
+
+    /**
+     * 鑷畾涔�"鏍囬"鏂囨湰
+     *
+     * @param title 鍐呭
+     */
+    public void setTitle(String title) {
+        if (TextUtils.isEmpty(title)) {
+            return;
+        }
+        titleStr = title;
+        if (viewBinding != null) {
+            viewBinding.loadingConfirmationTitleTv.setText(titleStr);
+        }
+
+    }
+
+    /**
+     * 鑷畾涔�"纭"鏂囨湰
+     *
+     * @param confirm 鍐呭
+     */
+    public void setConfirmation(String confirm) {
+        if (TextUtils.isEmpty(confirm)) {
+            return;
+        }
+        yesStr = confirm;
+
+        if (viewBinding != null) {
+            viewBinding.dialogConfirmTv.setText(yesStr);
+        }
+
+
+    }
+
+    /**
+     * 鑷畾涔�"鍙栨秷"鏂囨湰
+     *
+     * @param cancel 鍐呭
+     */
+    public void setCancel(String cancel) {
+        if (TextUtils.isEmpty(cancel)) {
+            return;
+        }
+        noStr = cancel;
+
+        if (viewBinding != null) {
+            viewBinding.dialogCancelTv.setText(noStr);
+        }
+    }
+
+
+    private void initEvent() {
+        viewBinding.dialogCancelLy.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (noOnclickListener != null) {
+                    noOnclickListener.Cancel();
+                }
+            }
+        });
+        viewBinding.dialogConfirmLy.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (yesOnclickListener != null) {
+                    yesOnclickListener.Confirm(viewBinding.loadingConfirmationInputEt.getText().toString());
+                }
+            }
+        });
+
+
+        viewBinding.loadingConfirmationClickTv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                v.setSelected(!v.isSelected());
+                if (v.isSelected()) {
+                    viewBinding.loadingConfirmationInputEt.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
+                    viewBinding.loadingConfirmationHideIv.setImageDrawable(AppCompatResources.getDrawable(mContext, R.drawable.show));
+                } else {
+                    viewBinding.loadingConfirmationInputEt.setTransformationMethod(PasswordTransformationMethod.getInstance());
+                    viewBinding.loadingConfirmationHideIv.setImageDrawable(AppCompatResources.getDrawable(mContext, R.drawable.hide));
+                }
+                //璁剧疆鍏夋爣浣嶇疆
+                viewBinding.loadingConfirmationInputEt.setSelection(viewBinding.loadingConfirmationInputEt.getText().length());
+
+            }
+        });
+    }
+
+
+    /**
+     * 鍒濆鍖栫晫闈㈡帶浠剁殑鏄剧ず鏁版嵁
+     */
+    private void initData() {
+        if (viewBinding == null) {
+            return;
+        }
+        //濡傛灉鐢ㄦ埛鑷畾浜唗itle鍜宮essage
+        if (!TextUtils.isEmpty(titleStr)) {
+            viewBinding.loadingConfirmationTitleTv.setText(titleStr);
+        }
+        //濡傛灉璁剧疆鎸夐挳鏂囧瓧
+        if (!TextUtils.isEmpty(yesStr)) {
+            viewBinding.dialogConfirmTv.setText(yesStr);
+        }
+        if (!TextUtils.isEmpty(noStr)) {
+            viewBinding.dialogCancelTv.setText(noStr);
+        }
+    }
+
+    private void initView() {
+
+
+    }
+
+
+    /**
+     * 璁剧疆鍙栨秷鎸夐挳鐩戝惉
+     *
+     * @param onNoOnclickListener -
+     */
+    public void setNoOnclickListener(onNoOnclickListener onNoOnclickListener) {
+        if (onNoOnclickListener != null) {
+            this.noOnclickListener = onNoOnclickListener;
+        }
+    }
+
+    /**
+     * 璁剧疆纭畾鎸夐挳鐩戝惉
+     *
+     * @param yesOnclickListener -
+     */
+    public void setYesOnclickListener(onYesOnclickListener yesOnclickListener) {
+        if (yesOnclickListener != null) {
+            this.yesOnclickListener = yesOnclickListener;
+        }
+
+    }
+
+    public interface onNoOnclickListener {
+        void Cancel();
+
+    }
+
+    public interface onYesOnclickListener {
+        void Confirm(String str);
+    }
+
+    /**
+     * 鏍规嵁鎵嬫満鐨勫垎杈ㄧ巼浠� dp 鐨勫崟浣� 杞垚涓� px(鍍忕礌)
+     */
+    private int dip2px(float dpValue) {
+        if (mContext == null) {
+            return 0;
+        }
+        final float scale = mContext.getResources().getDisplayMetrics().density;
+        return (int) (dpValue * scale + 0.5f);
+    }
+
+    /**
+     * 鏍规嵁鎵嬫満鐨勫垎杈ㄧ巼浠� px(鍍忕礌) 鐨勫崟浣� 杞垚涓� dp
+     */
+    private int px2dip(float pxValue) {
+        final float scale = mContext.getResources().getDisplayMetrics().density;
+        return (int) (pxValue / scale + 0.5f);
+    }
+
+}

--
Gitblit v1.8.0