wjc
2023-06-13 b25b6b325094511ff800e676171eae8831ad40d9
2023年06月13日22:01:19

备份代码
7个文件已添加
8个文件已修改
766 ■■■■■ 已修改文件
.idea/misc.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/AndroidManifest.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/device/FastScanActivity.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationDialog.java 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationInputDialog.java 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/loading_confirmation_bj.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/loading_confirmation_edit_bj.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/loading_confirm.xml 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/loading_confirm_input.xml 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/colors.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/strings.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
third-zxing/build.gradle 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/misc.xml
@@ -3,7 +3,14 @@
  <component name="DesignSurface">
    <option name="filePathToZoomLevelMap">
      <map>
        <entry key="../../../../../layout/custom_preview.xml" value="0.22314814814814815" />
        <entry key="app/src/main/res/drawable/loading_bj.xml" value="0.1205" />
        <entry key="app/src/main/res/drawable/loading_confirmation_edit_bj.xml" value="0.1205" />
        <entry key="app/src/main/res/layout/activity_home_login.xml" value="0.10030395136778116" />
        <entry key="app/src/main/res/layout/activity_my_power_station.xml" value="0.10030395136778116" />
        <entry key="app/src/main/res/layout/fragment_house_list.xml" value="0.10030395136778116" />
        <entry key="app/src/main/res/layout/loading_confirm.xml" value="0.1" />
        <entry key="app/src/main/res/layout/loading_confirm_input.xml" value="0.10659637451171876" />
      </map>
    </option>
  </component>
app/src/main/AndroidManifest.xml
@@ -14,6 +14,7 @@
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <application
        android:name=".HDLApp"
        android:allowBackup="true"
@@ -27,7 +28,8 @@
            android:exported="false" />
        <activity
            android:name=".ui.MyPowerStationActivity"
            android:exported="false" />
            android:exported="false"
            />
        <activity
            android:name=".ui.HomeLoginActivity"
            android:exported="false" />
app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java
@@ -1,13 +1,17 @@
package com.hdl.photovoltaic.ui;
import androidx.annotation.NonNull;
import androidx.appcompat.content.res.AppCompatResources;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.View;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.base.CustomBaseActivity;
import com.hdl.photovoltaic.databinding.ActivityMyPowerStationBinding;
import com.hdl.photovoltaic.utils.PermissionUtils;
public class MyPowerStationActivity extends CustomBaseActivity {
@@ -76,4 +80,5 @@
        }
    }
}
app/src/main/java/com/hdl/photovoltaic/ui/device/FastScanActivity.java
@@ -1,8 +1,12 @@
package com.hdl.photovoltaic.ui.device;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.Rect;
import android.hardware.Camera;
@@ -46,7 +50,7 @@
import java.util.Hashtable;
public class FastScanActivity extends CustomBaseActivity implements IZxingActivity, SurfaceHolder.Callback {
    private static final String TAG = com.zxing.qrcode.CaptureActivity.class.getSimpleName();
    private static final String TAG = "FastScanActivity";
    private final int REQUEST_CODE = 33;
    private CameraManager cameraManager;
    private CaptureActivityHandler handler;
app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java
@@ -1,21 +1,29 @@
package com.hdl.photovoltaic.ui.powerstation;
import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.hardware.camera2.CameraManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.databinding.FragmentHouseListBinding;
import com.hdl.photovoltaic.base.CustomBaseFragment;
import com.hdl.photovoltaic.other.HdlLogLogic;
import com.hdl.photovoltaic.ui.adapter.HouseInfoAdapter;
import com.hdl.photovoltaic.ui.bean.HouseListBean;
import com.hdl.photovoltaic.ui.device.FastScanActivity;
import com.hdl.photovoltaic.utils.PermissionUtils;
import com.hdl.photovoltaic.widget.ConfirmationDialog;
import com.hdl.photovoltaic.widget.ConfirmationInputDialog;
import java.util.ArrayList;
import java.util.List;
@@ -48,12 +56,17 @@
    private void initEvent() {
        viewBinding.toolbarTopFragmentHouseListRl.topMoreIv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(_mActivity, FastScanActivity.class);
                startActivity(intent);
                String[] ary = PermissionUtils.checkPermission(_mActivity, new String[]{Manifest.permission.CAMERA});
                if (ary.length > 0) {
                    requestPermissions(ary, PermissionUtils.STATUS_SUCCESS);
                } else {
                    startActivity(FastScanActivity.class);
                }
            }
        });
        //设置下拉箭头颜色
@@ -91,5 +104,17 @@
    }
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == PermissionUtils.STATUS_SUCCESS) {
            for (int i = 0; i < permissions.length; i++) {
                if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
                    startActivity(FastScanActivity.class);
                }
            }
        }
    }
}
app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java
New file
@@ -0,0 +1,78 @@
package com.hdl.photovoltaic.utils;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Build;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class PermissionUtils {
    /**
     * 获取权限成功
     */
    public static final int STATUS_SUCCESS = 1;
    /**
     * 只有activity才可以申请
     *
     * @param activity -
     * @param strings  -
     */
    public static void askPermission(Activity activity, String[] strings) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            List<String> newList = new ArrayList<>();
            for (String permission : strings) {
                boolean flag = checkPermission(activity, permission);
                if (!flag) {
                    newList.add(permission);
                }
            }
            if (newList.size() > 0) {
                ActivityCompat.requestPermissions(activity, newList.toArray(new String[0]), STATUS_SUCCESS);
            }
        }
    }
    /**
     * 检查一个权限
     *
     * @param activity   -
     * @param permission -
     * @return -
     */
    public static boolean checkPermission(Activity activity, String permission) {
        //first we need check this Drive has? CAMERA Permission
        return ContextCompat.checkSelfPermission(activity, permission) == PackageManager.PERMISSION_GRANTED;
    }
    /**
     * 检查多个权限
     *
     * @param activity -
     * @param strings  -
     * @return -
     */
    public static String[] checkPermission(Activity activity, String[] strings) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            List<String> newList = new ArrayList<>();
            for (String permission : strings) {
                boolean flag = checkPermission(activity, permission);
                if (!flag) {
                    newList.add(permission);
                }
            }
            return newList.toArray(new String[0]);
        }
        return new String[]{};
    }
}
app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationDialog.java
New file
@@ -0,0 +1,177 @@
package com.hdl.photovoltaic.widget;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import androidx.annotation.NonNull;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.databinding.LoadingConfirmBinding;
/**
 * 确认框
 */
public class ConfirmationDialog extends Dialog {
    public ConfirmationDialog(@NonNull Context context) {
        super(context, R.style.Custom_AlertDialog);
        this.mContext = context;
    }
    private final Context mContext;
    private onNoOnclickListener noOnclickListener;//取消按钮被点击了的监听器
    private onYesOnclickListener yesOnclickListener;//确定按钮被点击了的监听器
    private LoadingConfirmBinding viewBinding;
    private String titleStr, contentStr, yesStr, noStr;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        viewBinding = LoadingConfirmBinding.inflate(getLayoutInflater());
        setContentView(viewBinding.getRoot());
//        setCancelable(true);//系统后退可以取消
        //空白处不能取消动画
        setCanceledOnTouchOutside(false);
        //初始化界面控件
        initView();
        //初始化界面数据
        initData();
        //初始化界面控件的事件
        initEvent();
    }
    /**
     * 自定义"标题"文本
     *
     * @param title 内容
     */
    public void setTitle(String title) {
        if (TextUtils.isEmpty(title)) {
            return;
        }
        titleStr = title;
    }
    /**
     * 自定义"确认"文本
     *
     * @param confirm 内容
     */
    public void setConfirmation(String confirm) {
        if (TextUtils.isEmpty(confirm)) {
            return;
        }
        yesStr = confirm;
    }
    /**
     * 自定义"取消"文本
     *
     * @param cancel 内容
     */
    public void setCancel(String cancel) {
        if (TextUtils.isEmpty(cancel)) {
            return;
        }
        noStr = cancel;
    }
    /**
     * 自定义"内容"文本
     *
     * @param content 内容
     */
    public void setContentText(String content) {
        if (TextUtils.isEmpty(content)) {
            return;
        }
        contentStr = content;
    }
    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();
                }
            }
        });
    }
    /**
     * 初始化界面控件的显示数据
     */
    private void initData() {
        //如果用户自定了title和message
        if (!TextUtils.isEmpty(titleStr)) {
            viewBinding.loadingConfirmationTitleTv.setText(titleStr);
        }
        if (!TextUtils.isEmpty(contentStr)) {
            viewBinding.loadingConfirmationContentTv.setText(contentStr);
        }
        //如果设置按钮文字
        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();
    }
}
app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationInputDialog.java
New file
@@ -0,0 +1,186 @@
package com.hdl.photovoltaic.widget;
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 com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.databinding.LoadingConfirmInputBinding;
/**
 * 输入确认框
 */
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();
    }
    /**
     * 自定义"标题"文本
     *
     * @param title 内容
     */
    public void setTitle(String title) {
        if (TextUtils.isEmpty(title)) {
            return;
        }
        titleStr = title;
    }
    /**
     * 自定义"确认"文本
     *
     * @param confirm 内容
     */
    public void setConfirmation(String confirm) {
        if (TextUtils.isEmpty(confirm)) {
            return;
        }
        yesStr = confirm;
    }
    /**
     * 自定义"取消"文本
     *
     * @param cancel 内容
     */
    public void setCancel(String cancel) {
        if (TextUtils.isEmpty(cancel)) {
            return;
        }
        noStr = cancel;
    }
    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() {
        //如果用户自定了title和message
        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);
    }
}
app/src/main/res/drawable/loading_confirmation_bj.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/text_FFFFFFFF" />
    <corners android:radius="@dimen/dp_16" />
</shape>
app/src/main/res/drawable/loading_confirmation_edit_bj.xml
New file
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="@dimen/dp_4" />
    <stroke
        android:width="0.5dp"
        android:color="@color/text_E1E1E1" />
</shape>
app/src/main/res/layout/loading_confirm.xml
New file
@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/loading_confirmation_cl"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/dp_48"
        android:layout_marginTop="@dimen/dp_20"
        android:layout_marginEnd="@dimen/dp_48"
        android:layout_marginBottom="@dimen/dp_20"
        android:background="@drawable/loading_confirmation_bj"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">
        <TextView
            android:id="@+id/loading_confirmation_title_tv"
            android:layout_width="wrap_content"
            android:layout_height="@dimen/dp_25"
            android:layout_marginStart="@dimen/dp_20"
            android:layout_marginTop="@dimen/dp_25"
            android:layout_marginEnd="@dimen/dp_20"
            android:textColor="@color/text_030D1C"
            android:textSize="@dimen/text_18"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
        <TextView
            android:id="@+id/loading_confirmation_content_tv"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="@dimen/dp_20"
            android:layout_marginTop="@dimen/dp_34"
            android:layout_marginEnd="@dimen/dp_20"
            android:layout_marginBottom="@dimen/dp_34"
            android:singleLine="false"
            android:textColor="@color/text_030D1C"
            app:layout_constraintBottom_toTopOf="@+id/dialog_confirm_bottom_line_ly"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/loading_confirmation_title_tv"
            />
        <LinearLayout
            android:id="@+id/dialog_confirm_bottom_line_ly"
            android:layout_width="0dp"
            android:layout_height="@dimen/dp_52"
            android:orientation="horizontal"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent">
            <LinearLayout
                android:id="@+id/dialog_cancel_ly"
                android:layout_width="@dimen/dp_0"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center">
                <TextView
                    android:id="@+id/dialog_cancel_tv"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/loading_取消"
                    android:textColor="@color/text_7C8590"
                    android:textSize="@dimen/text_18" />
            </LinearLayout>
            <View
                android:layout_width="0.5dp"
                android:layout_height="@dimen/dp_23"
                android:layout_gravity="center"
                android:background="@color/text_E1E1E1" />
            <LinearLayout
                android:id="@+id/dialog_confirm_ly"
                android:layout_width="@dimen/dp_0"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center">
                <TextView
                    android:id="@+id/dialog_confirm_tv"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/loading_确认"
                    android:textColor="@color/text_FF245EC3"
                    android:textSize="@dimen/text_18" />
            </LinearLayout>
        </LinearLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/loading_confirm_input.xml
New file
@@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <RelativeLayout
        android:id="@+id/loading_confirmation_rl"
        android:layout_width="@dimen/dp_0"
        android:layout_height="225dp"
        android:layout_marginStart="@dimen/dp_48"
        android:layout_marginEnd="@dimen/dp_48"
        android:background="@drawable/loading_confirmation_bj"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">
        <TextView
            android:id="@+id/loading_confirmation_title_tv"
            android:layout_width="wrap_content"
            android:layout_height="@dimen/dp_25"
            android:layout_alignParentTop="true"
            android:layout_centerInParent="true"
            android:layout_marginStart="@dimen/dp_20"
            android:layout_marginTop="@dimen/dp_25"
            android:layout_marginEnd="@dimen/dp_20"
            android:text="wifi_ssid"
            android:textColor="@color/text_030D1C"
            android:textSize="@dimen/text_18" />
        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/loading_confirmation_input_cl"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_50"
            android:layout_below="@+id/loading_confirmation_title_tv"
            android:layout_marginStart="@dimen/dp_16"
            android:layout_marginTop="@dimen/dp_34"
            android:layout_marginEnd="@dimen/dp_16"
            android:background="@drawable/loading_confirmation_edit_bj"
            >
            <EditText
                android:id="@+id/loading_confirmation_input_et"
                android:layout_width="0dp"
                android:layout_height="@dimen/dp_23"
                android:layout_marginEnd="@dimen/dp_40"
                android:background="@null"
                android:gravity="center_vertical|start"
                android:hint="@string/home_login_请输入密码"
                android:inputType="textPassword"
                android:lines="1"
                android:maxLines="1"
                android:paddingStart="@dimen/dp_16"
                android:paddingEnd="@dimen/dp_16"
                android:textColor="@color/text_FF000000"
                android:textColorHint="@color/text_25000000"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                />
            <ImageView
                android:id="@+id/loading_confirmation_hide_iv"
                android:layout_width="23dp"
                android:layout_height="18dp"
                android:layout_marginEnd="@dimen/dp_16"
                android:src="@drawable/hide"
                app:layout_constraintBottom_toBottomOf="@+id/loading_confirmation_input_et"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toTopOf="@+id/loading_confirmation_input_et" />
            <!--加大点击事件-->
            <TextView
                android:id="@+id/loading_confirmation_click_tv"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toEndOf="@+id/loading_confirmation_input_et"
                app:layout_constraintTop_toTopOf="parent" />
        </androidx.constraintlayout.widget.ConstraintLayout>
        <LinearLayout
            android:id="@+id/dialog_confirm_bottom_line_ly"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_52"
            android:layout_alignParentBottom="true"
            android:orientation="horizontal">
            <LinearLayout
                android:id="@+id/dialog_cancel_ly"
                android:layout_width="@dimen/dp_0"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center">
                <TextView
                    android:id="@+id/dialog_cancel_tv"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/loading_取消"
                    android:textColor="@color/text_7C8590"
                    android:textSize="@dimen/text_18" />
            </LinearLayout>
            <View
                android:layout_width="0.5dp"
                android:layout_height="@dimen/dp_23"
                android:layout_gravity="center"
                android:background="@color/text_E1E1E1" />
            <LinearLayout
                android:id="@+id/dialog_confirm_ly"
                android:layout_width="@dimen/dp_0"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center">
                <TextView
                    android:id="@+id/dialog_confirm_tv"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/loading_确认"
                    android:textColor="@color/text_FF245EC3"
                    android:textSize="@dimen/text_18" />
            </LinearLayout>
        </LinearLayout>
    </RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/values/colors.xml
@@ -32,5 +32,7 @@
    <color name="text_CBCDD1">#CBCDD1</color>/
    <color name="text_FF245EC3">#FF245EC3</color>#
    <color name="text_636363">#636363</color>
    <color name="text_7C8590">#7C8590</color>
    <color name="text_030D1C">#030D1C</color>
</resources>
app/src/main/res/values/strings.xml
@@ -21,7 +21,7 @@
    <string name="home_login_注册">注册</string>
    <string name="home_login_忘记密码">忘记密码</string>
    <string name="home_login_登录">登录</string>
    <string name="home_login_登录中">登录中...</string>
    <string name="home_login_登录中">登录中…</string>
    <string name="home_login_体验电站">体验电站</string>
    <string name="home_login_同意_服务协议">同意《服务协议》和《用户信息保护规定》</string>
    <string name="home_login_error_账号不能为空">账号不能为空.</string>
@@ -43,8 +43,10 @@
    <string name="my_power_station_离线">离线</string>
    <string name="my_power_station_故障">故障</string>
    <string name="my_power_station_运行">运行</string>
    <!--设备-->
    <string name="device_手动连接">手动连接</string>
    <string name="device_加载中">加载中...</string>
    <string name="device_加载中">加载中…</string>
    <!--我的-->
@@ -52,5 +54,9 @@
    <string name="me_设置">设置</string>
    <string name="me_关于">关于</string>
    <!--弹框-->
    <string name="loading_取消">取消</string>
    <string name="loading_确认">确认</string>
</resources>
third-zxing/build.gradle
@@ -39,7 +39,7 @@
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testImplementation 'junit:junit:4.12'
    implementation 'com.android.support:support-annotations:28.0.0'
    api 'com.android.support:support-annotations:28.0.0'
//    api 'com.android.support:appcompat-v7:28.0.0'
    implementation 'androidx.appcompat:appcompat:1.3.0'
    api 'androidx.appcompat:appcompat:1.3.0'
}