mac
2023-12-01 593303fa91fd541844b204ec913c462d7855a31e
2023年12月01日18:24:35

备份代码
5个文件已添加
26个文件已修改
1066 ■■■■ 已修改文件
HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/core/connect/HDLModBusConnect.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/HDLApp.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/base/BaseActivity.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/config/UserConfigManage.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/other/HdlThreadLogic.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/account/RegisterAccountActivity.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/adapter/LanguageAdapter.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/me/AccountAndSecurityActivity.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/me/AsRegardsActivity.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/me/BindMailActivity.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/me/BindPhoneActivity.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/me/MeFragment.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/me/SetActivity.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/me/TemperatureUnitActivity.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/me/WebActivity.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/me/languageSelectionActivity.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/test/TestLogActivity.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/utils/LocalManageUtil.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java 241 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/widget/ListStaticDialog.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/widget/adapter/ListDialogAdapter.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/list_464d5a.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/dialog_list.xml 94 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/dialog_static_list.xml 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/diaog_list_line.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values-en/strings.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/colors.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/strings.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/themes.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/core/connect/HDLModBusConnect.java
@@ -169,9 +169,6 @@
    }
    /**
     * 发送原生透传命令数据
     *
app/src/main/java/com/hdl/photovoltaic/HDLApp.java
@@ -43,10 +43,6 @@
public class HDLApp extends Application {
    /**
     * 默认中文
     */
    public String currentAppLanguage = "zh";
    //控制打印 Debug模式打印
    private Boolean isLogEnabled = true;
    //三方sdk初始化标识
@@ -72,18 +68,16 @@
    }
    public void getAppLanguage() {
        String language = SharedPreUtils.getSharedPreferencesKey("language");
        String language = UserConfigManage.getInstance().getCurrentAppLanguage();
        if (TextUtils.isEmpty(language)) {
            //从内存里面获取不到语言,获取当前系统的;
            String str = getResources().getConfiguration().locale.getCountry();
            if (str.equals("CN") || str.equals("TW")) {
                language = "zh";
                UserConfigManage.getInstance().setCurrentAppLanguage(LocalManageUtil.zh);
            } else {
                language = "en";
                UserConfigManage.getInstance().setCurrentAppLanguage(LocalManageUtil.en);
            }
        }
        currentAppLanguage = language;
    }
    public void setInfoMap(String key, String value) {
app/src/main/java/com/hdl/photovoltaic/base/BaseActivity.java
@@ -10,6 +10,7 @@
import androidx.appcompat.app.AppCompatActivity;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.listener.BaseView;
import com.hdl.photovoltaic.other.HdlThreadLogic;
import com.hdl.photovoltaic.utils.AppManagerUtils;
@@ -52,8 +53,8 @@
    @Override
    protected void attachBaseContext(Context newBase) {
        super.attachBaseContext(newBase);
//        //app中英文设置
//        LocalManageUtil.changeAppLanguage("en", newBase);
        //app中英文设置
        LocalManageUtil.changeAppLanguage(UserConfigManage.getInstance().getCurrentAppLanguage(), newBase);
    }
app/src/main/java/com/hdl/photovoltaic/config/UserConfigManage.java
@@ -77,7 +77,51 @@
    //远程连接的Mqtt的客户端ID
    public String connEmqClientId;
    //当前登录的账号是不是之前的账号
    public boolean theSameLoginAccount;
    private boolean theSameLoginAccount;
    //绑定手机号
    private String bingPhone;
    //绑定邮箱
    private String bingEmail;
    //温度单位(C摄氏度;F=华氏度)
    private String temperature_unit = "C";
    //app当前的语言
    private String currentAppLanguage;
    public String getCurrentAppLanguage() {
        return currentAppLanguage;
    }
    public void setCurrentAppLanguage(String currentAppLanguage) {
        this.currentAppLanguage = currentAppLanguage;
    }
    public String getTemperature_unit() {
        return temperature_unit;
    }
    public void setTemperature_unit(String temperature_unit) {
        this.temperature_unit = temperature_unit;
    }
    public String getBingPhone() {
        return bingPhone == null ? "" : bingPhone;
    }
    public void setBingPhone(String bingPhone) {
        this.bingPhone = bingPhone;
    }
    public String getBingEmail() {
        return bingEmail == null ? "" : bingEmail;
    }
    public void setBingEmail(String bingEmail) {
        this.bingEmail = bingEmail;
    }
    /**
     * 用户名称
app/src/main/java/com/hdl/photovoltaic/other/HdlThreadLogic.java
@@ -141,7 +141,7 @@
    /**
     * 错误提示框(蓝湖上样式)
     * 全局弹出框,错误提示框(蓝湖上样式)
     *
     * @param isBoolean 图标(true使用成功图标,false使用成功图标)
     * @param msg       信息
@@ -152,7 +152,7 @@
    }
    /**
     * 错误提示框(蓝湖上样式)
     * 全局弹出框,错误提示框(蓝湖上样式)
     *
     * @param isBoolean   图标(true使用成功图标,false使用成功图标)
     * @param msg         信息
app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
@@ -151,6 +151,7 @@
                        this.uniGetCurrentHomeLocalAndCloudGatewayList(callback);
                    }
                    break;
                    //modBus协议专用
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_MODBUS_SEND: {
                        sendModBus(data, callback);
                    }
@@ -294,7 +295,7 @@
    /**
     * 原生打开uni指定页面
     * 原生【打开】uni指定页面
     *
     * @param path       打开路径
     * @param jsonObject 附件数据(没有数据填null)
app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java
@@ -37,8 +37,12 @@
import com.hdl.photovoltaic.other.HdlAccountLogic;
import com.hdl.photovoltaic.other.HdlThreadLogic;
import com.hdl.photovoltaic.ui.me.WebActivity;
import com.hdl.photovoltaic.utils.LocalManageUtil;
import com.hdl.photovoltaic.widget.ConfirmationCancelDialog;
import com.hdl.photovoltaic.widget.ConfirmationCancelDialog1;
import com.hdl.photovoltaic.widget.ListDialog;
import com.hdl.photovoltaic.widget.adapter.ListDialogAdapter;
import com.hdl.sdk.link.core.utils.LanguageUtils;
import java.util.List;
@@ -101,6 +105,11 @@
        viewBinding.homeLoginInstallUserTv.setSelected(UserConfigManage.getInstance().isBAccount());
        viewBinding.homeLoginPrivacyCheckIv.setSelected(UserConfigManage.getInstance().isAcceiptPolicy());
        setStringDifferentColors(viewBinding.homeLoginPrivacyTv);
        if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(LocalManageUtil.zh)) {
            viewBinding.homeLoginLanguageTv.setText("简体中文");
        } else {
            viewBinding.homeLoginLanguageTv.setText("English");
        }
        String acc = "13375012441";
        String pws = "123456";
@@ -115,6 +124,22 @@
     */
    private void initEvent() {
        //语言选择
        viewBinding.homeLoginLanguageTv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ListDialog listDialog = new ListDialog(_mActivity);
                listDialog.show();
                listDialog.setCanceledOnTouchOutside(true);
                listDialog.setItemOnclickListener(new ListDialogAdapter.OnclickListener() {
                    @Override
                    public void onClick(int position, ListDialogAdapter.DialogItemData itemData) {
                        viewBinding.homeLoginLanguageTv.setText(itemData.getTitle());
                    }
                });
            }
        });
        viewBinding.homeLoginAccountEt.addTextChangedListener(accountTextWatcher);
        viewBinding.homeLoginClearContentsIv.setOnClickListener(new View.OnClickListener() {
            @Override
app/src/main/java/com/hdl/photovoltaic/ui/account/RegisterAccountActivity.java
@@ -28,7 +28,7 @@
import com.hdl.photovoltaic.utils.KeyboardStateObserverUtils;
import com.hdl.photovoltaic.widget.ConfirmationCancelDialog;
import com.hdl.photovoltaic.widget.ConfirmationTipDialog;
import com.hdl.photovoltaic.widget.ListDialog;
import com.hdl.photovoltaic.widget.ListStaticDialog;
/**
 * 注册账号界面
@@ -104,9 +104,9 @@
        viewBinding.registerRegionServerRl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ListDialog listDialog = new ListDialog(_mActivity);
                ListStaticDialog listDialog = new ListStaticDialog(_mActivity);
                listDialog.show();
                listDialog.setOnHDLChinaOnListener(new ListDialog.onHDLChinaListener() {
                listDialog.setOnHDLChinaOnListener(new ListStaticDialog.onHDLChinaListener() {
                    @Override
                    public void HDLChina() {
                        mUrl = "https://china-gateway.hdlcontrol.com";
@@ -115,7 +115,7 @@
                    }
                });
                listDialog.setOnHDLBahrainListener(new ListDialog.onHDLBahrainListener() {
                listDialog.setOnHDLBahrainListener(new ListStaticDialog.onHDLBahrainListener() {
                    @Override
                    public void HDLBahrain() {
                        mUrl = "https://bahrain-gateway.hdlcontrol.com";
app/src/main/java/com/hdl/photovoltaic/ui/adapter/LanguageAdapter.java
@@ -11,6 +11,7 @@
import androidx.recyclerview.widget.RecyclerView;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.config.UserConfigManage;
import java.util.List;
@@ -72,6 +73,7 @@
    public void setNoOnclickListener(OnclickListener onclickListener) {
        this.noOnclickListener = onclickListener;
    }
    /**
     * 一行布局容器
     */
@@ -99,6 +101,18 @@
        private String title;
        private boolean state;
        //温度单位("C"摄氏度或者"F"华摄度)
        private String unit = UserConfigManage.getInstance().getTemperature_unit();
        //app当前语言
        private String language = UserConfigManage.getInstance().getCurrentAppLanguage();
        public String getLanguage() {
            return language;
        }
        public void setLanguage(String language) {
            this.language = language;
        }
        public String getTitle() {
            return title == null ? "" : title;
@@ -116,6 +130,14 @@
            this.state = state;
        }
        public String getUnit() {
            return unit;
        }
        public void setUnit(String unit) {
            this.unit = unit;
        }
    }
app/src/main/java/com/hdl/photovoltaic/ui/me/AccountAndSecurityActivity.java
@@ -1,11 +1,16 @@
package com.hdl.photovoltaic.ui.me;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import androidx.annotation.Nullable;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.base.CustomBaseActivity;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.databinding.ActivityAccountAndSecurityBinding;
/**
@@ -13,6 +18,7 @@
 */
public class AccountAndSecurityActivity extends CustomBaseActivity {
    private ActivityAccountAndSecurityBinding viewBinding;
    @Override
    public Object getContentView() {
@@ -42,13 +48,17 @@
        viewBinding.setAccountPhoneIl.getRoot().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(BindPhoneActivity.class);
                Intent intent = new Intent();
                intent.setClass(_mActivity, BindPhoneActivity.class);
                startActivityForResult(intent, 20);
            }
        });
        viewBinding.setAccountMailIl.getRoot().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(BindMailActivity.class);
                Intent intent = new Intent();
                intent.setClass(_mActivity, BindMailActivity.class);
                startActivityForResult(intent, 20);
            }
        });
@@ -82,7 +92,29 @@
        viewBinding.setAccountMailIl.sllLlRlNameTv.setText(R.string.set_email_address);
        viewBinding.setAccountMailIl.sllLlRlRightContentTv.setText(R.string.set_not_bind);
        viewBinding.setAccountMailIl.sllLlRlRightContentTv.setVisibility(View.VISIBLE);
        viewBinding.setChangePswIl.sllLlRlNameTv.setText(R.string.home_login_change_password);
        updateStyle();
    }
    /**
     * 刷新绑定手机号和邮箱
     */
    private void updateStyle() {
        if (!TextUtils.isEmpty(UserConfigManage.getInstance().getBingPhone())) {
            viewBinding.setAccountPhoneIl.sllLlRlRightContentTv.setText(UserConfigManage.getInstance().getBingPhone());
        }
        if (!TextUtils.isEmpty(UserConfigManage.getInstance().getBingEmail())) {
            viewBinding.setAccountMailIl.sllLlRlRightContentTv.setText(UserConfigManage.getInstance().getBingEmail());
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 20 && resultCode == 20) {
            updateStyle();
        }
    }
}
app/src/main/java/com/hdl/photovoltaic/ui/me/AsRegardsActivity.java
@@ -75,7 +75,7 @@
            }
        });
        //todo 等接口
        String content = "https://spark.appc02.com/ksgd1";
        String content = "https://developer.hdlcontrol.com/AppDownload/HDLDebugerDownload.html";
        Bitmap bitmap = HdlCommonLogic.getInstance().createQRCodeBitmap(content, 168, 168, "UTF-8", "H", "1", Color.BLACK, Color.WHITE);
        viewBinding.asRegardsQrCodeIv.setImageBitmap(bitmap);
app/src/main/java/com/hdl/photovoltaic/ui/me/BindMailActivity.java
@@ -9,6 +9,7 @@
import com.hdl.linkpm.sdk.core.exception.HDLException;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.base.CustomBaseActivity;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.databinding.ActivityBindMailBinding;
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.other.HdlAccountLogic;
@@ -44,6 +45,7 @@
        viewBinding.toolbarTopFragmentHouseListRl.topBackBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setResult(20);
                finish();
            }
        });
@@ -70,6 +72,8 @@
                    HdlAccountLogic.getInstance().bindingAccount_C("", mailStr, verificationStr, new CloudCallBeak<Boolean>() {
                        @Override
                        public void onSuccess(Boolean obj) {
                            UserConfigManage.getInstance().setBingEmail(mailStr);
                            UserConfigManage.getInstance().Save();
                            HdlThreadLogic.tipFlashingBox(_mActivity, true, getString(R.string.set_bind_mail_succeed), 0);
                        }
app/src/main/java/com/hdl/photovoltaic/ui/me/BindPhoneActivity.java
@@ -1,6 +1,7 @@
package com.hdl.photovoltaic.ui.me;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.text.TextUtils;
@@ -9,6 +10,7 @@
import com.hdl.linkpm.sdk.core.exception.HDLException;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.base.CustomBaseActivity;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.databinding.ActivityBindPhoneBinding;
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.other.HdlAccountLogic;
@@ -44,6 +46,7 @@
        viewBinding.toolbarTopFragmentHouseListRl.topBackBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setResult(20);
                finish();
            }
        });
@@ -70,6 +73,8 @@
                    HdlAccountLogic.getInstance().bindingAccount_C(phoneStr, "", verificationStr, new CloudCallBeak<Boolean>() {
                        @Override
                        public void onSuccess(Boolean obj) {
                            UserConfigManage.getInstance().setBingPhone(phoneStr);
                            UserConfigManage.getInstance().Save();
                            HdlThreadLogic.tipFlashingBox(_mActivity, true, getString(R.string.set_bind_phone_succeed), 0);
                        }
app/src/main/java/com/hdl/photovoltaic/ui/me/MeFragment.java
@@ -68,7 +68,13 @@
        HdlAccountLogic.getInstance().getMemberInfo_C(new CloudCallBeak<CUserInfo>() {
            @Override
            public void onSuccess(CUserInfo cUserInfo) {
                if (cUserInfo == null) {
                    return;
                }
                mC_UserInfo = cUserInfo;
                UserConfigManage.getInstance().setBingPhone(cUserInfo.getMemberPhone());
                UserConfigManage.getInstance().setBingEmail(cUserInfo.getMemberEmail());
                UserConfigManage.getInstance().Save();
//                hideLoading();
                //获取用户头像路径
                if (cUserInfo.getMemberHeadIcon().contains("http")) {
@@ -177,8 +183,8 @@
        viewBinding.toolbarTopFragmentMeRl.topTitleTv.setText(R.string.me);
        viewBinding.toolbarTopFragmentMeRl.topMoreIv.setVisibility(View.VISIBLE);
        viewBinding.toolbarTopFragmentMeRl.topMoreIv.setImageResource(R.drawable.message);
//        viewBinding.toolbarTopFragmentMeRl.topMoreIv.setVisibility(View.VISIBLE);
//        viewBinding.toolbarTopFragmentMeRl.topMoreIv.setImageResource(R.drawable.message);
        viewBinding.fragmentMeLineMessageCenterIl.fragmentMeLineLeftIconIv.setImageResource(R.drawable.message_center);
        viewBinding.fragmentMeLineMessageCenterIl.fragmentMeLineTitleIv.setText(R.string.set_message_center);
app/src/main/java/com/hdl/photovoltaic/ui/me/SetActivity.java
@@ -9,9 +9,12 @@
import android.os.IBinder;
import android.view.View;
import androidx.annotation.Nullable;
import com.hdl.linkpm.sdk.HDLLinkPMSdk;
import com.hdl.linkpm.sdk.core.exception.HDLException;
import com.hdl.linkpm.sdk.user.HDLLinkPMUser;
import com.hdl.photovoltaic.HDLApp;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.base.CustomBaseActivity;
import com.hdl.photovoltaic.config.UserConfigManage;
@@ -21,7 +24,10 @@
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.other.HdlAccountLogic;
import com.hdl.photovoltaic.other.HdlThreadLogic;
import com.hdl.photovoltaic.ui.StartActivity;
import com.hdl.photovoltaic.ui.adapter.LanguageAdapter;
import com.hdl.photovoltaic.utils.AppManagerUtils;
import com.hdl.photovoltaic.widget.ConfirmationCancelDialog;
import com.hdl.photovoltaic.widget.ConfirmationInputDialog;
/**
@@ -31,6 +37,7 @@
    private ActivitySetBinding viewBinding;
    @Override
    public Object getContentView() {
@@ -67,7 +74,9 @@
        viewBinding.setAccountSecurityIl.getRoot().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(AccountAndSecurityActivity.class);
                Intent intent = new Intent();
                intent.setClass(_mActivity, AccountAndSecurityActivity.class);
                startActivity(intent);
            }
        });
        //温度单位
@@ -144,6 +153,24 @@
     * 退出登录请求的方法
     */
    private void logoutRequest() {
        HDLLinkPMUser.getInstance().logout(0);
        // 二次确认提示框
        ConfirmationCancelDialog dialog = new ConfirmationCancelDialog(this);
        dialog.setTitle(getString(R.string.loading_title_tip));
        dialog.setContent(getString(R.string.loading_log_out));
        dialog.show();
        dialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() {
            @Override
            public void Confirm() {
                HDLLinkPMUser.getInstance().logout(0);
            }
        });
        dialog.setNoOnclickListener(new ConfirmationCancelDialog.onNoOnclickListener() {
            @Override
            public void Cancel() {
                dialog.dismiss();
            }
        });
    }
}
app/src/main/java/com/hdl/photovoltaic/ui/me/TemperatureUnitActivity.java
@@ -8,9 +8,12 @@
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.base.CustomBaseActivity;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.databinding.ActivityAccountAndSecurityBinding;
import com.hdl.photovoltaic.databinding.ActivityTemperatureUnitBinding;
import com.hdl.photovoltaic.ui.adapter.LanguageAdapter;
import com.hdl.photovoltaic.utils.AppManagerUtils;
import com.hdl.photovoltaic.widget.ConfirmationCancelDialog;
import java.util.ArrayList;
import java.util.List;
@@ -49,11 +52,21 @@
        LanguageAdapter.ItemData c = new LanguageAdapter.ItemData();
        c.setState(false);
        c.setTitle(getString(R.string.set_c));
        c.setUnit("C");
        list.add(c);
        LanguageAdapter.ItemData f = new LanguageAdapter.ItemData();
        f.setState(false);
        f.setTitle(getString(R.string.set_f));
        f.setUnit("F");
        list.add(f);
        for (int i = 0; i < list.size(); i++) {
            LanguageAdapter.ItemData itemData = list.get(i);
            if (itemData.getUnit().equals(UserConfigManage.getInstance().getTemperature_unit())) {
                //初始化之前状态
                itemData.setState(true);
            }
        }
    }
@@ -75,13 +88,14 @@
                }
                list.get(position).setState(true);
                languageAdapter.notifyDataSetChanged();
                UserConfigManage.getInstance().setTemperature_unit(itemData.getUnit());
                UserConfigManage.getInstance().Save();
            }
        });
    }
    private void initView() {
        viewBinding.toolbarTopFragmentHouseListRl.topTitleTv.setText(R.string.set_temperature_unit);
        viewBinding.toolbarTopFragmentHouseListRl.topTitleTv.setTextColor(getResources().getColor(R.color.text_030D1C, null));
app/src/main/java/com/hdl/photovoltaic/ui/me/WebActivity.java
@@ -7,7 +7,9 @@
import com.hdl.photovoltaic.HDLApp;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.base.CustomBaseActivity;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.databinding.ActivityWebBinding;
import com.hdl.photovoltaic.utils.LocalManageUtil;
/**
 * 《服务协议》和《隐私协议》界面
@@ -62,7 +64,7 @@
        viewBinding.toolbarTopFragmentHouseListRl.topBackBtn.setVisibility(View.VISIBLE);
        viewBinding.toolbarTopFragmentHouseListRl.topBarView.setBackgroundColor(getResources().getColor(R.color.text_FFFFFFFF, null));
        if (HDLApp.getInstance().currentAppLanguage.equals("zh")) {
        if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(LocalManageUtil.zh)) {
            //中文
            if (this.typeIntValue == 0) {
                //用户协议
app/src/main/java/com/hdl/photovoltaic/ui/me/languageSelectionActivity.java
@@ -2,22 +2,30 @@
import androidx.recyclerview.widget.LinearLayoutManager;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import com.hdl.photovoltaic.HDLApp;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.base.CustomBaseActivity;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.databinding.ActivityLanguageSelectionBinding;
import com.hdl.photovoltaic.ui.StartActivity;
import com.hdl.photovoltaic.ui.adapter.LanguageAdapter;
import com.hdl.photovoltaic.utils.AppManagerUtils;
import com.hdl.photovoltaic.utils.LocalManageUtil;
import com.hdl.photovoltaic.widget.ConfirmationCancelDialog;
import java.util.ArrayList;
import java.util.List;
/**
 * 语言选择的界面
 */
public class languageSelectionActivity extends CustomBaseActivity {
    /**
     * 语言选择的界面
     */
    private ActivityLanguageSelectionBinding viewBinding;
    private LanguageAdapter languageAdapter;
@@ -48,11 +56,21 @@
        LanguageAdapter.ItemData zh = new LanguageAdapter.ItemData();
        zh.setState(false);
        zh.setTitle("简体中文");
        zh.setLanguage(LocalManageUtil.zh);
        list.add(zh);
        LanguageAdapter.ItemData en = new LanguageAdapter.ItemData();
        en.setState(false);
        en.setTitle("English");
        en.setLanguage(LocalManageUtil.en);
        list.add(en);
        for (int i = 0; i < list.size(); i++) {
            LanguageAdapter.ItemData itemData = list.get(i);
            if (itemData.getLanguage().equals(UserConfigManage.getInstance().getCurrentAppLanguage())) {
                //初始化之前状态
                itemData.setState(true);
            }
        }
    }
@@ -74,11 +92,41 @@
                }
                list.get(position).setState(true);
                languageAdapter.notifyDataSetChanged();
                languageSelectionDialog(itemData);
            }
        });
    }
    /**
     * 二次确认提示框
     *
     * @param itemData 选中数据
     */
    private void languageSelectionDialog(LanguageAdapter.ItemData itemData) {
        ConfirmationCancelDialog dialog = new ConfirmationCancelDialog(this);
        dialog.setTitle(getString(R.string.loading_title_tip));
        dialog.setContent(getString(R.string.loading_app_restart));
        dialog.show();
        dialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() {
            @Override
            public void Confirm() {
                UserConfigManage.getInstance().setCurrentAppLanguage(itemData.getLanguage());
                UserConfigManage.getInstance().Save();
                AppManagerUtils.getAppManager().finishAllActivity();
                Intent intent = new Intent();
                intent.setClass(HDLApp.getInstance(), StartActivity.class);
                startActivity(intent);
            }
        });
        dialog.setNoOnclickListener(new ConfirmationCancelDialog.onNoOnclickListener() {
            @Override
            public void Cancel() {
                dialog.dismiss();
            }
        });
    }
    private void initView() {
app/src/main/java/com/hdl/photovoltaic/ui/test/TestLogActivity.java
@@ -15,7 +15,7 @@
import com.hdl.photovoltaic.other.HdlLogLogic;
import com.hdl.photovoltaic.other.HdlThreadLogic;
import com.hdl.photovoltaic.widget.ConfirmationCancelDialog;
import com.hdl.photovoltaic.widget.ListDialog;
import com.hdl.photovoltaic.widget.ListStaticDialog;
import java.util.IdentityHashMap;
import java.util.Map;
@@ -54,18 +54,18 @@
            @Override
            public void onClick(View v) {
                ListDialog listDialog = new ListDialog(_mActivity);
                ListStaticDialog listDialog = new ListStaticDialog(_mActivity);
                listDialog.setLineContent1("清除【当前住宅】的本地日志");
                listDialog.setLineContent2("清除【所有住宅】的本地日志");
                listDialog.show();
                listDialog.setOnHDLChinaOnListener(new ListDialog.onHDLChinaListener() {
                listDialog.setOnHDLChinaOnListener(new ListStaticDialog.onHDLChinaListener() {
                    @Override
                    public void HDLChina() {
                        getDialog(1, listDialog);
                    }
                });
                listDialog.setOnHDLBahrainListener(new ListDialog.onHDLBahrainListener() {
                listDialog.setOnHDLBahrainListener(new ListStaticDialog.onHDLBahrainListener() {
                    @Override
                    public void HDLBahrain() {
                        getDialog(2, listDialog);
@@ -91,7 +91,7 @@
     *
     * @param value 大于1表示清除所有住宅日志
     */
    private void getDialog(int value, ListDialog listDialog) {
    private void getDialog(int value, ListStaticDialog listDialog) {
        ConfirmationCancelDialog dialog = new ConfirmationCancelDialog(_mActivity);
        dialog.setTitle("提示");
        if (value > 1) {
app/src/main/java/com/hdl/photovoltaic/utils/LocalManageUtil.java
@@ -17,6 +17,9 @@
 */
public class LocalManageUtil {
    public static final String zh = "zh";//中文
    public static final String en = "en";//英文
//    private static Locale mLocale;
    /**
app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java
@@ -2,24 +2,46 @@
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.hdl.photovoltaic.HDLApp;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.databinding.DialogListBinding;
import com.hdl.photovoltaic.ui.StartActivity;
import com.hdl.photovoltaic.ui.adapter.LanguageAdapter;
import com.hdl.photovoltaic.utils.AppManagerUtils;
import com.hdl.photovoltaic.utils.LocalManageUtil;
import com.hdl.photovoltaic.widget.adapter.ListDialogAdapter;
import java.util.ArrayList;
import java.util.List;
/**
 * 动态列表弹窗
 */
public class ListDialog extends Dialog {
    private onNoListener onNoOnclickListener;
    private onHDLChinaListener onHDLChinaListener;
    private onHDLBahrainListener onHDLBahrainListener;
    private DialogListBinding viewBinding;
    private String contentStr1, contentStr2;
    private ListDialogAdapter listDialogAdapter;
    private final Context mContext;
    private List<ListDialogAdapter.DialogItemData> list;
    private ListDialogAdapter.OnclickListener itemOnclickListener;//点击了的监听器
    public ListDialog(@NonNull Context context) {
        super(context, R.style.Custom_Dialog);
        super(context, R.style.Custom_List_Dialog);
        this.mContext = context;
    }
    @Override
@@ -27,121 +49,122 @@
        super.onCreate(savedInstanceState);
        viewBinding = DialogListBinding.inflate(getLayoutInflater());
        setContentView(viewBinding.getRoot());
        setDialogTouchOutsideCloseable(this);
        initData();
        initEvent();
    }
    /**
     * 初始化界面控件的显示数据
     */
    private void initData() {
        //如果用户自定了contentStr1和contentStr2
        if (!TextUtils.isEmpty(contentStr1)) {
            viewBinding.hdlChinaTv.setText(contentStr1);
        }
        if (!TextUtils.isEmpty(contentStr2)) {
            viewBinding.hdlBahrainTv.setText(contentStr2);
        }
    }
    /**
     * 自定义"内容"文本
     *
     * @param content 内容
     */
    public void setLineContent1(String content) {
        if (TextUtils.isEmpty(content)) {
            return;
        }
        contentStr1 = content;
        if (viewBinding != null) {
            viewBinding.hdlChinaTv.setText(contentStr1);
        }
    }
    /**
     * 自定义"内容"文本
     *
     * @param content 内容
     */
    public void setLineContent2(String content) {
        if (TextUtils.isEmpty(content)) {
            return;
        }
        contentStr2 = content;
        if (viewBinding != null) {
            viewBinding.hdlBahrainTv.setText(contentStr2);
        }
    }
    public String geHDLChinaText() {
        return viewBinding.hdlChinaTv.getText().toString();
    }
    ;
    public String getHDLBahrainText() {
        return viewBinding.hdlBahrainTv.getText().toString();
    }
    private void initEvent() {
        viewBinding.hdlCancelLl.setOnClickListener(new View.OnClickListener() {
        LinearLayoutManager linearLayout = new LinearLayoutManager(mContext);
        listDialogAdapter = new ListDialogAdapter(this.list, mContext);
        viewBinding.logicRcv.setLayoutManager(linearLayout);
        viewBinding.logicRcv.setAdapter(listDialogAdapter);
        listDialogAdapter.setItemOnclickListener(new ListDialogAdapter.OnclickListener() {
            @Override
            public void onClick(View v) {
                if (onNoOnclickListener != null) {
                    onNoOnclickListener.Cancel();
            public void onClick(int position, ListDialogAdapter.DialogItemData itemData) {
                for (int i = 0; i < list.size(); i++) {
                    ListDialogAdapter.DialogItemData data = list.get(i);
                    data.setState(false);
                }
                list.get(position).setState(true);
                listDialogAdapter.notifyDataSetChanged();
                languageSelectionDialog(position, itemData);
            }
        });
    }
    public void setItemOnclickListener(ListDialogAdapter.OnclickListener onclickListener) {
        this.itemOnclickListener = onclickListener;
    }
    private void initData() {
        list = new ArrayList<>();
        ListDialogAdapter.DialogItemData zh = new ListDialogAdapter.DialogItemData();
        zh.setState(false);
        zh.setTitle("简体中文");
        zh.setLanguage(LocalManageUtil.zh);
        list.add(zh);
        ListDialogAdapter.DialogItemData en = new ListDialogAdapter.DialogItemData();
        en.setState(false);
        en.setTitle("English");
        en.setLanguage(LocalManageUtil.en);
        list.add(en);
        for (int i = 0; i < list.size(); i++) {
            ListDialogAdapter.DialogItemData itemData = list.get(i);
            if (itemData.getLanguage().equals(UserConfigManage.getInstance().getCurrentAppLanguage())) {
                //初始化之前状态
                itemData.setState(true);
            }
        }
    }
    /**
     * 二次确认提示框
     *
     * @param position 索引值
     * @param itemData 选中数据
     */
    private void languageSelectionDialog(int position, ListDialogAdapter.DialogItemData itemData) {
        ConfirmationCancelDialog dialog = new ConfirmationCancelDialog(this.mContext);
        dialog.setTitle(this.mContext.getString(R.string.loading_title_tip));
        dialog.setContent(this.mContext.getString(R.string.loading_app_restart));
        dialog.show();
        dialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() {
            @Override
            public void Confirm() {
                if (itemOnclickListener != null) {
                    itemOnclickListener.onClick(position, itemData);
                }
                dismiss();
                UserConfigManage.getInstance().setCurrentAppLanguage(itemData.getLanguage());
                UserConfigManage.getInstance().Save();
                AppManagerUtils.getAppManager().finishAllActivity();
                Intent intent = new Intent();
                intent.setClass(HDLApp.getInstance(), StartActivity.class);
                mContext.startActivity(intent);
            }
        });
        viewBinding.hdlChinaLl.setOnClickListener(new View.OnClickListener() {
        dialog.setNoOnclickListener(new ConfirmationCancelDialog.onNoOnclickListener() {
            @Override
            public void onClick(View v) {
                if (onHDLChinaListener != null) {
                    onHDLChinaListener.HDLChina();
                }
            public void Cancel() {
                dialog.dismiss();
            }
        });
        viewBinding.hdlBahrainLl.setOnClickListener(new View.OnClickListener() {
    }
    //解决dialog.setCanceledOnTouchOutside(true) 不生效问题
    public void setDialogTouchOutsideCloseable(Dialog dialog) {
        viewBinding.getRoot().setOnTouchListener(new View.OnTouchListener() {
            @Override
            public void onClick(View v) {
                if (onHDLBahrainListener != null) {
                    onHDLBahrainListener.HDLBahrain();
                }
            public boolean onTouch(View v, MotionEvent event) {
                int top = viewBinding.dialogParent.getTop();
                int left = viewBinding.dialogParent.getLeft();
                int bottom = viewBinding.dialogParent.getBottom();
                int right = viewBinding.dialogParent.getRight();
                int y = (int) event.getY();
                int x = (int) event.getX();
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    if (top < y && y < bottom) {
                    } else {
                        dismiss();
                    }
                    if (left < x && x < right) {
                    } else {
                        dismiss();
                    }
                }
                return true;
            }
        });
//        Window window = dialog.getWindow();
//        WindowManager.LayoutParams params = window.getAttributes();
//        params.width = ViewGroup.LayoutParams.MATCH_PARENT;
//        params.height = ViewGroup.LayoutParams.MATCH_PARENT;
//        window.setAttributes(params);
//        //空白处不能取消动画
//        setCanceledOnTouchOutside(true);
    }
    public void setNoOnListener(onNoListener onclickListener) {
        this.onNoOnclickListener = onclickListener;
    }
    public void setOnHDLChinaOnListener(onHDLChinaListener onHDLChinaListener) {
        this.onHDLChinaListener = onHDLChinaListener;
    }
    public void setOnHDLBahrainListener(onHDLBahrainListener onHDLBahrainListener) {
        this.onHDLBahrainListener = onHDLBahrainListener;
    }
    public interface onNoListener {
        void Cancel();
    }
    public interface onHDLChinaListener {
        void HDLChina();
    }
    public interface onHDLBahrainListener {
        void HDLBahrain();
    }
}
app/src/main/java/com/hdl/photovoltaic/widget/ListStaticDialog.java
New file
@@ -0,0 +1,150 @@
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.DialogStaticListBinding;
/**
 * 静态列表弹窗
 */
public class ListStaticDialog extends Dialog {
    private onNoListener onNoOnclickListener;
    private onHDLChinaListener onHDLChinaListener;
    private onHDLBahrainListener onHDLBahrainListener;
    private DialogStaticListBinding viewBinding;
    private String contentStr1, contentStr2;
    public ListStaticDialog(@NonNull Context context) {
        super(context, R.style.Custom_Dialog);
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        viewBinding = DialogStaticListBinding.inflate(getLayoutInflater());
        setContentView(viewBinding.getRoot());
        initData();
        initEvent();
    }
    /**
     * 初始化界面控件的显示数据
     */
    private void initData() {
        //如果用户自定了contentStr1和contentStr2
        if (!TextUtils.isEmpty(contentStr1)) {
            viewBinding.hdlChinaTv.setText(contentStr1);
        }
        if (!TextUtils.isEmpty(contentStr2)) {
            viewBinding.hdlBahrainTv.setText(contentStr2);
        }
    }
    /**
     * 自定义"内容"文本
     *
     * @param content 内容
     */
    public void setLineContent1(String content) {
        if (TextUtils.isEmpty(content)) {
            return;
        }
        contentStr1 = content;
        if (viewBinding != null) {
            viewBinding.hdlChinaTv.setText(contentStr1);
        }
    }
    /**
     * 自定义"内容"文本
     *
     * @param content 内容
     */
    public void setLineContent2(String content) {
        if (TextUtils.isEmpty(content)) {
            return;
        }
        contentStr2 = content;
        if (viewBinding != null) {
            viewBinding.hdlBahrainTv.setText(contentStr2);
        }
    }
    public String geHDLChinaText() {
        return viewBinding.hdlChinaTv.getText().toString();
    }
    ;
    public String getHDLBahrainText() {
        return viewBinding.hdlBahrainTv.getText().toString();
    }
    private void initEvent() {
        viewBinding.hdlCancelLl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (onNoOnclickListener != null) {
                    onNoOnclickListener.Cancel();
                }
                dismiss();
            }
        });
        viewBinding.hdlChinaLl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (onHDLChinaListener != null) {
                    onHDLChinaListener.HDLChina();
                }
            }
        });
        viewBinding.hdlBahrainLl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (onHDLBahrainListener != null) {
                    onHDLBahrainListener.HDLBahrain();
                }
            }
        });
    }
    public void setNoOnListener(onNoListener onclickListener) {
        this.onNoOnclickListener = onclickListener;
    }
    public void setOnHDLChinaOnListener(onHDLChinaListener onHDLChinaListener) {
        this.onHDLChinaListener = onHDLChinaListener;
    }
    public void setOnHDLBahrainListener(onHDLBahrainListener onHDLBahrainListener) {
        this.onHDLBahrainListener = onHDLBahrainListener;
    }
    public interface onNoListener {
        void Cancel();
    }
    public interface onHDLChinaListener {
        void HDLChina();
    }
    public interface onHDLBahrainListener {
        void HDLBahrain();
    }
}
app/src/main/java/com/hdl/photovoltaic/widget/adapter/ListDialogAdapter.java
New file
@@ -0,0 +1,129 @@
package com.hdl.photovoltaic.widget.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.config.UserConfigManage;
import java.util.List;
public class ListDialogAdapter extends RecyclerView.Adapter<ListDialogAdapter.MyViewHolder> {
    private List<ListDialogAdapter.DialogItemData> mList;
    private final Context mContext;
    private ListDialogAdapter.OnclickListener itemOnclickListener;//点击了的监听器
    public ListDialogAdapter(List<ListDialogAdapter.DialogItemData> list, Context context) {
        this.mList = list;
        this.mContext = context;
    }
    @NonNull
    @Override
    public ListDialogAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.diaog_list_line, parent, false);
        return new ListDialogAdapter.MyViewHolder(view);
    }
    @Override
    public void onBindViewHolder(@NonNull ListDialogAdapter.MyViewHolder holder, int position) {
        ListDialogAdapter.DialogItemData itemData = this.mList.get(position);
        holder.list_item_title_tv.setText(itemData.getTitle());
        holder.list_item_title_tv.setTextColor(mContext.getColor(R.color.text_50FFFFFF));
        if (itemData.isState()) {
            holder.list_item_title_tv.setTextColor(mContext.getColor(R.color.text_FFFFFFFF));
        }
        if (position == this.mList.size() - 1) {
            holder.list_item_line_v.setVisibility(View.GONE);
        }
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (itemOnclickListener != null) {
                    itemOnclickListener.onClick(holder.getAdapterPosition(), itemData);
                }
            }
        });
    }
    @Override
    public int getItemCount() {
        return this.mList == null ? 0 : this.mList.size();
    }
    public void setList(List<ListDialogAdapter.DialogItemData> list) {
        this.mList = list;
    }
    public void setItemOnclickListener(ListDialogAdapter.OnclickListener onclickListener) {
        this.itemOnclickListener = onclickListener;
    }
    /**
     * 一行布局容器
     */
    static class MyViewHolder extends RecyclerView.ViewHolder {
        public TextView list_item_title_tv;
        public View list_item_line_v;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            list_item_title_tv = itemView.findViewById(R.id.list_item_title_tv);
            list_item_line_v = itemView.findViewById(R.id.list_item_line_v);
        }
    }
    public interface OnclickListener {
        void onClick(int position, ListDialogAdapter.DialogItemData itemData);
    }
    public static class DialogItemData {
        private String title;
        private boolean state;
        //app当前语言
        private String language = UserConfigManage.getInstance().getCurrentAppLanguage();
        public String getLanguage() {
            return language;
        }
        public void setLanguage(String language) {
            this.language = language;
        }
        public String getTitle() {
            return title == null ? "" : title;
        }
        public void setTitle(String title) {
            this.title = title;
        }
        public boolean isState() {
            return state;
        }
        public void setState(boolean state) {
            this.state = state;
        }
    }
}
app/src/main/res/drawable/list_464d5a.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="#464D5A" />
    <corners android:radius="@dimen/dp_4" />
</shape>
app/src/main/res/layout/dialog_list.xml
@@ -5,90 +5,24 @@
    android:layout_height="match_parent">
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_200"
        android:layout_marginStart="@dimen/dp_20"
        android:layout_marginEnd="@dimen/dp_20"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent">
        android:id="@+id/dialog_parent"
        android:layout_width="@dimen/dp_141"
        android:layout_height="272dp"
        android:layout_marginStart="61dp"
        android:layout_marginTop="@dimen/dp_89"
        android:layout_marginEnd="174dp"
        android:background="@drawable/list_464d5a"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">
        <LinearLayout
            android:id="@+id/hdl_china_ll"
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/logic_rcv"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_50"
            android:background="@color/ffffff"
            android:gravity="center"
            android:orientation="horizontal"
            android:layout_height="match_parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">
            <TextView
                android:id="@+id/hdl_china_tv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="HDL China"
                android:textColor="@color/text_90000000"
                android:textSize="@dimen/text_18" />
        </LinearLayout>
        <View
            android:id="@+id/line_v"
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:background="@color/text_E1E1E1"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/hdl_china_ll"
            />
        <LinearLayout
            android:id="@+id/hdl_bahrain_ll"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_50"
            android:background="@color/ffffff"
            android:gravity="center"
            android:orientation="horizontal"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/line_v">
            <TextView
                android:id="@+id/hdl_bahrain_tv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="HDL Bahrain"
                android:textColor="@color/text_90000000"
                android:textSize="@dimen/text_18"
                />
        </LinearLayout>
        <LinearLayout
            android:id="@+id/hdl_cancel_ll"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_50"
            android:layout_marginTop="@dimen/dp_20"
            android:background="@color/ffffff"
            android:gravity="center"
            android:orientation="horizontal"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/hdl_bahrain_ll">
            <TextView
                android:id="@+id/hdl_cancel_tv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/loading_cancel"
                android:textColor="@color/text_90000000"
                android:textSize="@dimen/text_18"
                />
        </LinearLayout>
            app:layout_constraintTop_toTopOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/dialog_static_list.xml
New file
@@ -0,0 +1,94 @@
<?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:layout_width="match_parent"
        android:layout_height="@dimen/dp_200"
        android:layout_marginStart="@dimen/dp_20"
        android:layout_marginEnd="@dimen/dp_20"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent">
        <LinearLayout
            android:id="@+id/hdl_china_ll"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_50"
            android:background="@color/ffffff"
            android:gravity="center"
            android:orientation="horizontal"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">
            <TextView
                android:id="@+id/hdl_china_tv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="HDL China"
                android:textColor="@color/text_90000000"
                android:textSize="@dimen/text_18" />
        </LinearLayout>
        <View
            android:id="@+id/line_v"
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:background="@color/text_E1E1E1"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/hdl_china_ll"
            />
        <LinearLayout
            android:id="@+id/hdl_bahrain_ll"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_50"
            android:background="@color/ffffff"
            android:gravity="center"
            android:orientation="horizontal"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/line_v">
            <TextView
                android:id="@+id/hdl_bahrain_tv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="HDL Bahrain"
                android:textColor="@color/text_90000000"
                android:textSize="@dimen/text_18"
                />
        </LinearLayout>
        <LinearLayout
            android:id="@+id/hdl_cancel_ll"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_50"
            android:layout_marginTop="@dimen/dp_20"
            android:background="@color/ffffff"
            android:gravity="center"
            android:orientation="horizontal"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/hdl_bahrain_ll">
            <TextView
                android:id="@+id/hdl_cancel_tv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/loading_cancel"
                android:textColor="@color/text_90000000"
                android:textSize="@dimen/text_18"
                />
        </LinearLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/diaog_list_line.xml
New file
@@ -0,0 +1,29 @@
<?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="@dimen/dp_141"
    android:layout_height="@dimen/dp_54"
    android:background="#464D5A">
    <TextView
        android:id="@+id/list_item_title_tv"
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_20"
        android:layout_marginStart="@dimen/dp_28"
        android:layout_marginTop="@dimen/dp_17"
        android:textColor="@color/text_FFFFFFFF"
        android:textSize="@dimen/text_14"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <View
        android:id="@+id/list_item_line_v"
        android:layout_width="109dp"
        android:layout_height="1dp"
        android:layout_marginStart="@dimen/dp_16"
        android:layout_marginBottom="@dimen/dp_1"
        android:background="@color/text_10FFFFFF"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/values-en/strings.xml
@@ -12,7 +12,7 @@
    <string name="hello_second_fragment">Hello second fragment. Arg: %1$s</string>
    <!--登录模块-->
    <string name="home_login_chinese">Chinese (Simplified)</string>
    <string name="home_login_chinese">简体中文</string>
    <string name="home_login_hdl_stored_energy">HDL光伏储能</string>
    <string name="home_login_an_installer">我是安装商</string>
    <string name="home_login__input_phone_email">请输入手机号/邮箱号</string>
app/src/main/res/values/colors.xml
@@ -41,6 +41,8 @@
    <color name="text_565758">#565758</color>
    <color name="text_222222">#222222</color>
    <color name="text_FF6B6B">#FF6B6B</color>
    <color name="text_10FFFFFF">#10FFFFFF</color>
    <color name="text_50FFFFFF">#50FFFFFF</color>
    #
app/src/main/res/values/strings.xml
@@ -12,7 +12,7 @@
    <string name="hello_second_fragment">Hello second fragment. Arg: %1$s</string>
    <!--登录模块-->
    <string name="home_login_chinese">中文(简体)</string>
    <string name="home_login_chinese">简体中文</string>
    <string name="home_login_hdl_stored_energy">HDL光伏储能</string>
    <string name="home_login_an_installer">我是安装商</string>
    <string name="home_login__input_phone_email">请输入手机号/邮箱号</string>
@@ -162,6 +162,9 @@
    <string name="loading_privacy_server">为了更好的保障您的合法权益,请您阅读并同意以下协议《隐私权政策》和《服务条款》</string>
    <string name="kill_app">再按一次退出应用</string>
    <string name="loading_not_supported">抱歉,暂不支持.</string>
    <string name="loading_title_tip">提示</string>
    <string name="loading_app_restart">确认后App将会重新启动.</string>
    <string name="loading_log_out">确认退出登录?</string>
    <!--    权限       -->
app/src/main/res/values/themes.xml
@@ -51,6 +51,12 @@
        <!--        <item name="android:windowBackground">@drawable/dia_bg</item>:设置dialog的背景-->
    </style>
    <style name="Custom_List_Dialog" parent="Custom_Dialog">
        <!--背景透明度 指界面透明度-->
        <item name="android:backgroundDimAmount">0</item>
    </style>
    <style name="DCloudMPHostActivityTheme" parent="@style/Theme.AppCompat">
        <item name="android:windowAnimationStyle">@style/uniMPHostWindowAnimation</item>
    </style>