mac
2023-11-30 caa35eaa7d9cae55a57155d9508d1285999f1bba
2023年11月30日22:16:31

备份代码
4个文件已添加
6个文件已修改
808 ■■■■■ 已修改文件
app/build.gradle 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/AndroidManifest.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/other/HdlAccountLogic.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/me/AccountAndSecurityActivity.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/me/BindMailActivity.java 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/me/BindPhoneActivity.java 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_bind_mail.xml 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_bind_phone.xml 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/strings.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/build.gradle
@@ -29,7 +29,7 @@
        minSdk 23
        targetSdk 30
        versionCode 1
        versionName "1.1.0"
        versionName "1.1.1"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
app/src/main/AndroidManifest.xml
@@ -73,6 +73,12 @@
        android:supportsRtl="true"
        android:theme="@style/Theme.PhotovoltaicDebug">
        <activity
            android:name=".ui.me.BindMailActivity"
            android:exported="false" />
        <activity
            android:name=".ui.me.BindPhoneActivity"
            android:exported="false" />
        <activity
            android:name=".ui.me.TemperatureUnitActivity"
            android:exported="false" />
        <activity
app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
@@ -104,6 +104,11 @@
    public static final String C_POST_UPLOAD_IMAGE = "/home-wisdom/app/images/upload_image";
    //上传图片(新)
    public static final String C_POST_UPLOAD_IMAGE_NEW = "/basis-cosmos/file/upload";
    //绑定认证(手机/邮箱)
    public static final String C_POST_MEMBERINFO_BINDWITHACCOUNT = "/smart-footstone/member/memberInfo/bindWithAccount";
    //解绑认证(手机/邮箱)
    public static final String C_POST_MEMBERINFO_UNBINDWITHACCOUNT = "/smart-footstone/member/memberInfo/unbindWithAccount";
    //endregion
    //endregion
app/src/main/java/com/hdl/photovoltaic/other/HdlAccountLogic.java
@@ -362,13 +362,7 @@
     * @param memberSex      用户性别
     * @param cloudCallBeak  -
     */
    public void updateMemberInfo_C(String languageType,
                                   String memberName,
                                   String memberBirthday,
                                   String memberHeadIcon,
                                   String loginName,
                                   String memberSex,
                                   CloudCallBeak<Boolean> cloudCallBeak) {
    public void updateMemberInfo_C(String languageType, String memberName, String memberBirthday, String memberHeadIcon, String loginName, String memberSex, CloudCallBeak<Boolean> cloudCallBeak) {
        String requestUrl = HttpApi.C_POST_UPDATE_MEMBER_INFO;
        JsonObject json = new JsonObject();
        if (!TextUtils.isEmpty(languageType)) {
@@ -523,6 +517,71 @@
    }
    /**
     * 绑定认证(手机/邮箱)(C端账号)
     *
     * @param memberPhone 手机号(绑定手机号memberEmail参数传空)
     * @param memberEmail 邮箱(绑定邮箱memberPhone参数传空)
     * @param verifyCode  验证码
     */
    public void bindingAccount_C(String memberPhone, String memberEmail, String verifyCode, CloudCallBeak<Boolean> cloudCallBeak) {
        String requestUrl = HttpApi.C_POST_MEMBERINFO_BINDWITHACCOUNT;
        JsonObject json = new JsonObject();
        if (!TextUtils.isEmpty(memberPhone)) {
            json.addProperty("memberPhone", memberPhone);//手机号
        }
        if (!TextUtils.isEmpty(memberPhone)) {
            json.addProperty("memberEmail", memberEmail);//邮箱
        }
        json.addProperty("verifyCode", verifyCode);//验证码
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
            @Override
            public void onSuccess(String str) {
                if (cloudCallBeak != null) {
                    cloudCallBeak.onSuccess(true);
                }
            }
            @Override
            public void onFailure(HDLException e) {
                if (cloudCallBeak != null) {
                    cloudCallBeak.onFailure(e);
                }
            }
        });
    }
    /**
     * 解绑认证(手机/邮箱)(C端账号)
     *
     * @param unBindLabel 解绑标识(PHONE   EMAIL)
     */
    public void unBindingAccount_C(String unBindLabel, CloudCallBeak<Boolean> cloudCallBeak) {
        String requestUrl = HttpApi.C_POST_MEMBERINFO_UNBINDWITHACCOUNT;
        JsonObject json = new JsonObject();
        json.addProperty("unBindLabel", unBindLabel);//手机号(PHONE   EMAIL)
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
            @Override
            public void onSuccess(String str) {
                if (cloudCallBeak != null) {
                    cloudCallBeak.onSuccess(true);
                }
            }
            @Override
            public void onFailure(HDLException e) {
                if (cloudCallBeak != null) {
                    cloudCallBeak.onFailure(e);
                }
            }
        });
    }
    // endregion
app/src/main/java/com/hdl/photovoltaic/ui/me/AccountAndSecurityActivity.java
@@ -42,13 +42,13 @@
        viewBinding.setAccountPhoneIl.getRoot().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(BindPhoneActivity.class);
            }
        });
        viewBinding.setAccountMailIl.getRoot().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(BindMailActivity.class);
            }
        });
app/src/main/java/com/hdl/photovoltaic/ui/me/BindMailActivity.java
New file
@@ -0,0 +1,171 @@
package com.hdl.photovoltaic.ui.me;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.text.TextUtils;
import android.view.View;
import com.hdl.linkpm.sdk.core.exception.HDLException;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.base.CustomBaseActivity;
import com.hdl.photovoltaic.databinding.ActivityBindMailBinding;
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.other.HdlAccountLogic;
import com.hdl.photovoltaic.other.HdlLogLogic;
import com.hdl.photovoltaic.other.HdlThreadLogic;
/**
 * 修改绑定邮箱的界面
 */
public class BindMailActivity extends CustomBaseActivity {
    private ActivityBindMailBinding viewBinding;
    @Override
    public Object getContentView() {
        viewBinding = ActivityBindMailBinding.inflate(getLayoutInflater());
        return viewBinding.getRoot();
    }
    @Override
    public void onBindView(Bundle savedInstanceState) {
        setNotificationBarBackgroundColor(CustomBaseActivity.CustomColor.white);
        setStatusBarTextColor();
        //初始化
        initView();
        //初始化界面监听器
        initEvent();
    }
    private void initEvent() {
        viewBinding.toolbarTopFragmentHouseListRl.topBackBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
        viewBinding.bindMailVerificationCodeRl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sendVerification();
            }
        });
        viewBinding.bindMailClearIv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewBinding.bindMailEt.setText("");
            }
        });
        viewBinding.bindPhoneTv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isLocalCheck()) {
                    String mailStr = viewBinding.bindMailEt.getText().toString();
                    String verificationStr = viewBinding.changeMailVerificationEt.getText().toString();
                    HdlAccountLogic.getInstance().bindingAccount_C("", mailStr, verificationStr, new CloudCallBeak<Boolean>() {
                        @Override
                        public void onSuccess(Boolean obj) {
                            HdlThreadLogic.tipFlashingBox(_mActivity, true, getString(R.string.set_bind_mail_succeed), 0);
                        }
                        @Override
                        public void onFailure(HDLException e) {
                            HdlThreadLogic.tipFlashingBox(_mActivity, false, e.getMsg(), e.getCode());
                        }
                    });
                }
            }
        });
    }
    private void initView() {
        viewBinding.toolbarTopFragmentHouseListRl.topTitleTv.setText(R.string.set_change_bind_mail);
        viewBinding.toolbarTopFragmentHouseListRl.topTitleTv.setTextColor(getResources().getColor(R.color.text_030D1C, null));
        viewBinding.toolbarTopFragmentHouseListRl.topBackBtn.setVisibility(View.VISIBLE);
        viewBinding.toolbarTopFragmentHouseListRl.topBarView.setBackgroundColor(getResources().getColor(R.color.text_FFFFFFFF, null));
    }
    /**
     * 发送验证码指令
     */
    private void sendVerification() {
        String account = viewBinding.bindMailEt.getText().toString();
        if (TextUtils.isEmpty(account)) {
            HdlThreadLogic.tipFlashingBox(this, false, getString(R.string.home_login_mail_null), -1);
            return;
        }
        HdlAccountLogic.getInstance().sendVerifyCode(false, account, "86", 3, new CloudCallBeak<Boolean>() {
            @Override
            public void onSuccess(Boolean obj) {
                countDownTimer.start();
            }
            @Override
            public void onFailure(HDLException e) {
                HdlThreadLogic.tipFlashingBox(_mActivity, false, e.getMsg(), e.getCode());
                HdlLogLogic.print(e.getMessage(), e.getCode(), true);
            }
        });
    }
    /**
     * 初始化手机号计时器
     */
    CountDownTimer countDownTimer = new CountDownTimer(60 * 1000, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            long time = (millisUntilFinished / 1000);
            String str = time + "s" + getString(R.string.home_login_psw_verification_repeater);
            viewBinding.bindMailVerificationTv.setText(str);
            viewBinding.bindMailVerificationTv.setTextColor(getResources().getColor(R.color.text_25000000, null));
            viewBinding.bindMailVerificationTv.setEnabled(false);
        }
        @Override
        public void onFinish() {
            viewBinding.bindMailVerificationTv.setText(getString(R.string.home_login_verification_regain));
            viewBinding.bindMailVerificationTv.setTextColor(getResources().getColor(R.color.text_245EC3, null));
            viewBinding.bindMailVerificationTv.setEnabled(true);
        }
    };
    /**
     * 本地校验
     */
    private boolean isLocalCheck() {
        String phoneStr = viewBinding.bindMailEt.getText().toString();
        String verificationStr = viewBinding.changeMailVerificationEt.getText().toString();
        if (TextUtils.isEmpty(phoneStr)) {
            HdlThreadLogic.tipFlashingBox(this, false, getString(R.string.home_login_mail_null), -1);
            return false;
        }
        if (TextUtils.isEmpty(verificationStr)) {
            HdlThreadLogic.tipFlashingBox(this, false, getString(R.string.home_login_null_verification_code), -1);
            return false;
        }
        return true;
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (countDownTimer != null) {
            countDownTimer.cancel();
            countDownTimer = null;
        }
    }
}
app/src/main/java/com/hdl/photovoltaic/ui/me/BindPhoneActivity.java
New file
@@ -0,0 +1,171 @@
package com.hdl.photovoltaic.ui.me;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.text.TextUtils;
import android.view.View;
import com.hdl.linkpm.sdk.core.exception.HDLException;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.base.CustomBaseActivity;
import com.hdl.photovoltaic.databinding.ActivityBindPhoneBinding;
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.other.HdlAccountLogic;
import com.hdl.photovoltaic.other.HdlLogLogic;
import com.hdl.photovoltaic.other.HdlThreadLogic;
/**
 * 修改绑定手机号的界面
 */
public class BindPhoneActivity extends CustomBaseActivity {
    private ActivityBindPhoneBinding viewBinding;
    @Override
    public Object getContentView() {
        viewBinding = ActivityBindPhoneBinding.inflate(getLayoutInflater());
        return viewBinding.getRoot();
    }
    @Override
    public void onBindView(Bundle savedInstanceState) {
        setNotificationBarBackgroundColor(CustomColor.white);
        setStatusBarTextColor();
        //初始化
        initView();
        //初始化界面监听器
        initEvent();
    }
    private void initEvent() {
        viewBinding.toolbarTopFragmentHouseListRl.topBackBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
        viewBinding.bindPhoneVerificationCodeRl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sendVerification();
            }
        });
        viewBinding.bindPhoneClearIv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewBinding.bindPhoneEt.setText("");
            }
        });
        viewBinding.bindPhoneTv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isLocalCheck()) {
                    String phoneStr = viewBinding.bindPhoneEt.getText().toString();
                    String verificationStr = viewBinding.changePhoneVerificationEt.getText().toString();
                    HdlAccountLogic.getInstance().bindingAccount_C(phoneStr, "", verificationStr, new CloudCallBeak<Boolean>() {
                        @Override
                        public void onSuccess(Boolean obj) {
                            HdlThreadLogic.tipFlashingBox(_mActivity, true, getString(R.string.set_bind_phone_succeed), 0);
                        }
                        @Override
                        public void onFailure(HDLException e) {
                            HdlThreadLogic.tipFlashingBox(_mActivity, false, e.getMsg(), e.getCode());
                        }
                    });
                }
            }
        });
    }
    private void initView() {
        viewBinding.toolbarTopFragmentHouseListRl.topTitleTv.setText(R.string.set_change_bind_phone_number);
        viewBinding.toolbarTopFragmentHouseListRl.topTitleTv.setTextColor(getResources().getColor(R.color.text_030D1C, null));
        viewBinding.toolbarTopFragmentHouseListRl.topBackBtn.setVisibility(View.VISIBLE);
        viewBinding.toolbarTopFragmentHouseListRl.topBarView.setBackgroundColor(getResources().getColor(R.color.text_FFFFFFFF, null));
    }
    /**
     * 发送验证码指令
     */
    private void sendVerification() {
        String account = viewBinding.bindPhoneEt.getText().toString();
        if (TextUtils.isEmpty(account)) {
            HdlThreadLogic.tipFlashingBox(this, false, getString(R.string.home_login_phone_null), -1);
            return;
        }
        HdlAccountLogic.getInstance().sendVerifyCode(true, account, "86", 3, new CloudCallBeak<Boolean>() {
            @Override
            public void onSuccess(Boolean obj) {
                countDownTimer.start();
            }
            @Override
            public void onFailure(HDLException e) {
                HdlThreadLogic.tipFlashingBox(_mActivity, false, e.getMsg(), e.getCode());
                HdlLogLogic.print(e.getMessage(), e.getCode(), true);
            }
        });
    }
    /**
     * 初始化手机号计时器
     */
    CountDownTimer countDownTimer = new CountDownTimer(60 * 1000, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            long time = (millisUntilFinished / 1000);
            String str = time + "s" + getString(R.string.home_login_psw_verification_repeater);
            viewBinding.bindPhoneVerificationTv.setText(str);
            viewBinding.bindPhoneVerificationTv.setTextColor(getResources().getColor(R.color.text_25000000, null));
            viewBinding.bindPhoneVerificationTv.setEnabled(false);
        }
        @Override
        public void onFinish() {
            viewBinding.bindPhoneVerificationTv.setText(getString(R.string.home_login_verification_regain));
            viewBinding.bindPhoneVerificationTv.setTextColor(getResources().getColor(R.color.text_245EC3, null));
            viewBinding.bindPhoneVerificationTv.setEnabled(true);
        }
    };
    /**
     * 本地校验
     */
    private boolean isLocalCheck() {
        String phoneStr = viewBinding.bindPhoneEt.getText().toString();
        String verificationStr = viewBinding.changePhoneVerificationEt.getText().toString();
        if (TextUtils.isEmpty(phoneStr)) {
            HdlThreadLogic.tipFlashingBox(this, false, getString(R.string.home_login_phone_null), -1);
            return false;
        }
        if (TextUtils.isEmpty(verificationStr)) {
            HdlThreadLogic.tipFlashingBox(this, false, getString(R.string.home_login_null_verification_code), -1);
            return false;
        }
        return true;
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (countDownTimer != null) {
            countDownTimer.cancel();
            countDownTimer = null;
        }
    }
}
app/src/main/res/layout/activity_bind_mail.xml
New file
@@ -0,0 +1,185 @@
<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.me.BindMailActivity">
    <include
        android:id="@+id/toolbar_top_fragment_house_list_rl"
        layout="@layout/toolbar_top_view_52" />
    <RelativeLayout
        android:id="@+id/bind_mail_parent_rl"
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_100"
        android:layout_marginTop="@dimen/dp_20"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/toolbar_top_fragment_house_list_rl">
        <TextView
            android:id="@+id/bind_mail_title_tv"
            android:layout_width="wrap_content"
            android:layout_height="@dimen/dp_20"
            android:layout_marginStart="@dimen/dp_20"
            android:layout_marginTop="@dimen/dp_24"
            android:text="@string/home_login_email"
            android:textColor="@color/text_65000000"
            android:textSize="@dimen/text_14" />
        <RelativeLayout
            android:id="@+id/bind_mail_rl"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_52"
            android:layout_below="@+id/bind_mail_title_tv"
            android:layout_marginStart="@dimen/dp_20"
            android:layout_marginTop="@dimen/dp_8"
            android:layout_marginEnd="@dimen/dp_20"
            android:background="@drawable/me_change_psw_bj"
            >
            <EditText
                android:id="@+id/bind_mail_et"
                android:layout_width="match_parent"
                android:layout_height="@dimen/dp_23"
                android:layout_centerVertical="true"
                android:layout_marginStart="@dimen/dp_16"
                android:layout_marginEnd="@dimen/dp_60"
                android:background="@null"
                android:hint="@string/home_login_input_mail"
                android:inputType="text"
                android:lines="1"
                android:maxLines="1"
                android:textColor="@color/text_FF000000"
                android:textColorHint="@color/text_25000000"
                android:textSize="@dimen/text_16" />
            <ImageView
                android:id="@+id/bind_mail_clear_iv"
                android:layout_width="@dimen/dp_20"
                android:layout_height="@dimen/dp_20"
                android:layout_alignParentEnd="true"
                android:layout_centerVertical="true"
                android:layout_marginEnd="@dimen/dp_12"
                android:src="@drawable/clear" />
            <View
                android:id="@+id/bind_mail_line_v"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_alignParentBottom="true"
                android:layout_marginStart="@dimen/dp_20"
                android:layout_marginEnd="@dimen/dp_20"
                android:background="@color/text_E1E1E1"
                android:visibility="gone"
                />
        </RelativeLayout>
    </RelativeLayout>
    <RelativeLayout
        android:id="@+id/bind_phone_verification_parent_rl"
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_100"
        android:layout_marginTop="@dimen/dp_24"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/bind_mail_parent_rl">
        <TextView
            android:id="@+id/bind_mail_verification_title_tv"
            android:layout_width="wrap_content"
            android:layout_height="@dimen/dp_20"
            android:layout_marginStart="@dimen/dp_20"
            android:text="@string/verification"
            android:textColor="@color/text_65000000"
            android:textSize="@dimen/text_14" />
        <!--邮箱获取验证码-->
        <RelativeLayout
            android:id="@+id/bind_mail_verification_code_rl"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_52"
            android:layout_below="@+id/bind_mail_verification_title_tv"
            android:layout_marginStart="@dimen/dp_20"
            android:layout_marginTop="@dimen/dp_8"
            android:layout_marginEnd="@dimen/dp_20"
            android:background="@drawable/me_change_psw_bj">
            <TextView
                android:id="@+id/bind_mail_verification_tv"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_alignParentEnd="true"
                android:layout_marginEnd="@dimen/dp_16"
                android:gravity="center"
                android:paddingStart="@dimen/dp_16"
                android:paddingEnd="@dimen/dp_0"
                android:text="@string/home_login_send_mail"
                android:textColor="@color/text_245EC3"
                android:textSize="@dimen/text_14" />
            <View
                android:id="@+id/bind_phone_verification_v"
                android:layout_width="0.5dp"
                android:layout_height="20dp"
                android:layout_alignStart="@+id/bind_mail_verification_tv"
                android:layout_centerInParent="true"
                android:background="@color/text_E1E1E1" />
            <EditText
                android:id="@+id/change_mail_verification_et"
                android:layout_width="@dimen/dp_150"
                android:layout_height="match_parent"
                android:layout_alignStart="@+id/bind_phone_verification_v"
                android:layout_alignParentStart="true"
                android:layout_marginStart="@dimen/dp_20"
                android:background="@null"
                android:hint="@string/home_login_input_verification_code"
                android:inputType="text"
                android:lines="1"
                android:maxLines="1"
                android:textColor="@color/text_FF000000"
                android:textColorHint="@color/text_25000000"
                android:textSize="@dimen/text_16"
                />
            <View
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_alignParentBottom="true"
                android:layout_marginStart="@dimen/dp_20"
                android:layout_marginEnd="@dimen/dp_20"
                android:background="@color/text_E1E1E1"
                android:visibility="gone"
                />
        </RelativeLayout>
    </RelativeLayout>
    <!--确认-->
    <TextView
        android:id="@+id/bind_phone__tv"
        android:layout_width="match_parent"
        android:layout_height="52dp"
        android:layout_marginStart="@dimen/dp_20"
        android:layout_marginTop="73dp"
        android:layout_marginEnd="@dimen/dp_20"
        android:background="@drawable/yesandnocheck"
        android:gravity="center"
        android:text="@string/home_login_affirm"
        android:textColor="@color/text_FFFFFFFF"
        android:textSize="18sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/bind_phone_verification_parent_rl" />
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/activity_bind_phone.xml
New file
@@ -0,0 +1,186 @@
<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.me.BindPhoneActivity">
    <include
        android:id="@+id/toolbar_top_fragment_house_list_rl"
        layout="@layout/toolbar_top_view_52" />
    <RelativeLayout
        android:id="@+id/bind_phone_parent_rl"
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_100"
        android:layout_marginTop="@dimen/dp_20"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/toolbar_top_fragment_house_list_rl">
        <TextView
            android:id="@+id/bind_phone_title_tv"
            android:layout_width="wrap_content"
            android:layout_height="@dimen/dp_20"
            android:layout_marginStart="@dimen/dp_20"
            android:layout_marginTop="@dimen/dp_24"
            android:text="@string/home_login_phone"
            android:textColor="@color/text_65000000"
            android:textSize="@dimen/text_14" />
        <RelativeLayout
            android:id="@+id/bind_phone_rl"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_52"
            android:layout_below="@+id/bind_phone_title_tv"
            android:layout_marginStart="@dimen/dp_20"
            android:layout_marginTop="@dimen/dp_8"
            android:layout_marginEnd="@dimen/dp_20"
            android:background="@drawable/me_change_psw_bj"
            >
            <EditText
                android:id="@+id/bind_phone_et"
                android:layout_width="match_parent"
                android:layout_height="@dimen/dp_23"
                android:layout_centerVertical="true"
                android:layout_marginStart="@dimen/dp_16"
                android:layout_marginEnd="@dimen/dp_60"
                android:background="@null"
                android:hint="@string/home_login_input_phone"
                android:inputType="number"
                android:lines="1"
                android:maxLines="1"
                android:textColor="@color/text_FF000000"
                android:textColorHint="@color/text_25000000"
                android:textSize="@dimen/text_16" />
            <ImageView
                android:id="@+id/bind_phone_clear_iv"
                android:layout_width="@dimen/dp_20"
                android:layout_height="@dimen/dp_20"
                android:layout_alignParentEnd="true"
                android:layout_centerVertical="true"
                android:layout_marginEnd="@dimen/dp_12"
                android:src="@drawable/clear" />
            <View
                android:id="@+id/bind_phone_line_v"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_alignParentBottom="true"
                android:layout_marginStart="@dimen/dp_20"
                android:layout_marginEnd="@dimen/dp_20"
                android:background="@color/text_E1E1E1"
                android:visibility="gone"
                />
        </RelativeLayout>
    </RelativeLayout>
    <RelativeLayout
        android:id="@+id/bind_phone_verification_parent_rl"
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_100"
        android:layout_marginTop="@dimen/dp_24"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/bind_phone_parent_rl">
        <TextView
            android:id="@+id/bind_phone_verification_title_tv"
            android:layout_width="wrap_content"
            android:layout_height="@dimen/dp_20"
            android:layout_marginStart="@dimen/dp_20"
            android:text="@string/verification"
            android:textColor="@color/text_65000000"
            android:textSize="@dimen/text_14" />
        <!--手机获取验证码-->
        <RelativeLayout
            android:id="@+id/bind_phone_verification_code_rl"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_52"
            android:layout_below="@+id/bind_phone_verification_title_tv"
            android:layout_marginStart="@dimen/dp_20"
            android:layout_marginTop="@dimen/dp_8"
            android:layout_marginEnd="@dimen/dp_20"
            android:background="@drawable/me_change_psw_bj">
            <TextView
                android:id="@+id/bind_phone_verification_tv"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_alignParentEnd="true"
                android:layout_marginEnd="@dimen/dp_16"
                android:gravity="center"
                android:paddingStart="@dimen/dp_16"
                android:paddingEnd="@dimen/dp_0"
                android:text="@string/home_login_verification_code"
                android:textColor="@color/text_245EC3"
                android:textSize="@dimen/text_14" />
            <View
                android:id="@+id/bind_phone_verification_v"
                android:layout_width="0.5dp"
                android:layout_height="20dp"
                android:layout_alignStart="@+id/bind_phone_verification_tv"
                android:layout_centerInParent="true"
                android:background="@color/text_E1E1E1" />
            <EditText
                android:id="@+id/change_phone_verification_et"
                android:layout_width="@dimen/dp_150"
                android:layout_height="match_parent"
                android:layout_alignStart="@+id/bind_phone_verification_v"
                android:layout_alignParentStart="true"
                android:layout_marginStart="@dimen/dp_20"
                android:background="@null"
                android:hint="@string/home_login_input_verification_code"
                android:inputType="text"
                android:lines="1"
                android:maxLines="1"
                android:textColor="@color/text_FF000000"
                android:textColorHint="@color/text_25000000"
                android:textSize="@dimen/text_16"
                />
            <View
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_alignParentBottom="true"
                android:layout_marginStart="@dimen/dp_20"
                android:layout_marginEnd="@dimen/dp_20"
                android:background="@color/text_E1E1E1"
                android:visibility="gone"
                />
        </RelativeLayout>
    </RelativeLayout>
    <!--确认-->
    <TextView
        android:id="@+id/bind_phone__tv"
        android:layout_width="match_parent"
        android:layout_height="52dp"
        android:layout_marginStart="@dimen/dp_20"
        android:layout_marginTop="73dp"
        android:layout_marginEnd="@dimen/dp_20"
        android:background="@drawable/yesandnocheck"
        android:gravity="center"
        android:text="@string/home_login_affirm"
        android:textColor="@color/text_FFFFFFFF"
        android:textSize="18sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/bind_phone_verification_parent_rl" />
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/values/strings.xml
@@ -61,6 +61,7 @@
    <string name="home_login_input_affirm_psw">请再次输入新密码</string>
    <string name="home_login_input_unlike_psw">新密码和确认密码不一致.</string>
    <string name="home_login_change_name_succeed">修改备注成功.</string>
    <string name="verification">验证码</string>
    <!--我的电站-->
@@ -121,6 +122,10 @@
    <string name="set_language_choice">语言选择</string>
    <string name="set_c">C(摄氏度)</string>
    <string name="set_f">F(华氏度)</string>
    <string name="set_change_bind_phone_number">修改手机号码</string>
    <string name="set_change_bind_mail">修改邮箱地址</string>
    <string name="set_bind_phone_succeed">绑定手机号成功.</string>
    <string name="set_bind_mail_succeed">绑定邮箱成功.</string>
    <!--app更新-->