.gradle/7.2/dependencies-accessors/dependencies-accessors.lockBinary files differ
.gradle/7.2/dependencies-accessors/gc.properties
.gradle/7.2/executionHistory/executionHistory.binBinary files differ
.gradle/7.2/executionHistory/executionHistory.lockBinary files differ
.gradle/7.2/fileChanges/last-build.binBinary files differ
.gradle/7.2/fileHashes/fileHashes.binBinary files differ
.gradle/7.2/fileHashes/fileHashes.lockBinary files differ
.gradle/7.2/fileHashes/resourceHashesCache.binBinary files differ
.gradle/7.2/gc.properties
.gradle/buildOutputCleanup/buildOutputCleanup.lockBinary files differ
.gradle/buildOutputCleanup/cache.properties
File was deleted .gradle/buildOutputCleanup/outputFiles.binBinary files differ
.gradle/checksums/checksums.lockBinary files differ
.gradle/vcs-1/gc.properties
.idea/compiler.xml
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="CompilerConfiguration"> <bytecodeTargetLevel target="11" /> <bytecodeTargetLevel target="1.8" /> </component> </project> .idea/libraries/Gradle__androidx_activity_activity_1_2_3_aar.xml
File was deleted .idea/libraries/Gradle__androidx_annotation_annotation_1_2_0.xml
File was deleted .idea/libraries/Gradle__androidx_annotation_annotation_experimental_1_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_appcompat_appcompat_1_3_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_3_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml
File was deleted .idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_cardview_cardview_1_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml
File was deleted .idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_2_0_4_aar.xml
File was deleted .idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_solver_2_0_4.xml
File was deleted .idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_core_core_1_5_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_customview_customview_1_1_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_1_1_aar.xml
File was deleted .idea/libraries/Gradle__androidx_dynamicanimation_dynamicanimation_1_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_fragment_fragment_1_3_4_aar.xml
File was deleted .idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_legacy_legacy_support_v4_1_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_3_1.xml
File was deleted .idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_1_aar.xml
File was deleted .idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_3_1_aar.xml
File was deleted .idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml
File was deleted .idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_1_aar.xml
File was deleted .idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_media_media_1_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_navigation_navigation_common_2_3_5_aar.xml
File was deleted .idea/libraries/Gradle__androidx_navigation_navigation_fragment_2_3_5_aar.xml
File was deleted .idea/libraries/Gradle__androidx_navigation_navigation_runtime_2_3_5_aar.xml
File was deleted .idea/libraries/Gradle__androidx_navigation_navigation_ui_2_3_5_aar.xml
File was deleted .idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_test_core_1_4_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_test_espresso_espresso_core_3_4_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_test_espresso_espresso_idling_resource_3_4_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_test_ext_junit_1_1_3_aar.xml
File was deleted .idea/libraries/Gradle__androidx_test_monitor_1_4_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_test_runner_1_4_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_test_services_storage_1_4_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_transition_transition_1_2_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_transition_transition_1_3_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_1_aar.xml
File was deleted .idea/libraries/Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml
File was deleted .idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml
File was deleted .idea/libraries/Gradle__com_google_android_material_material_1_4_0_aar.xml
File was deleted .idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1.xml
File was deleted .idea/libraries/Gradle__com_squareup_javawriter_2_1_1.xml
File was deleted .idea/libraries/Gradle__javax_inject_javax_inject_1.xml
File was deleted .idea/libraries/Gradle__junit_junit_4_12.xml
File was deleted .idea/libraries/Gradle__junit_junit_4_13_2.xml
File was deleted .idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml
File was deleted .idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3.xml
File was deleted .idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3.xml
File was deleted .idea/misc.xml
@@ -1,24 +1,3 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="DesignSurface"> <option name="filePathToZoomLevelMap"> <map> <entry key="../../../../../layout/custom_preview.xml" value="0.22314814814814815" /> <entry key="app/src/main/res/drawable/progress_small.xml" value="0.1275" /> <entry key="app/src/main/res/layout/activity_home_login.xml" value="0.10030395136778116" /> <entry key="app/src/main/res/layout/activity_my_power_station.xml" value="0.10030395136778116" /> <entry key="app/src/main/res/layout/fragment_house_list.xml" value="0.10030395136778116" /> <entry key="app/src/main/res/layout/fragment_me.xml" value="0.10030395136778116" /> <entry key="app/src/main/res/layout/frgment_house_list_line.xml" value="0.1921875" /> <entry key="app/src/main/res/layout/loading_alert.xml" value="0.1" /> <entry key="app/src/main/res/layout/loading_confirm.xml" value="0.1" /> <entry key="app/src/main/res/layout/loading_confirm_input.xml" value="0.1" /> <entry key="app/src/main/res/layout/loading_exception_log.xml" value="0.1921875" /> <entry key="app/src/main/res/layout/toolbar_top_view_44.xml" value="0.1921875" /> <entry key="app/src/main/res/layout/toolbar_top_view_52.xml" value="0.10030395136778116" /> </map> </option> </component> <component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK" /> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="corretto-1.8" project-jdk-type="JavaSDK" /> </project> .idea/modules/PhotovoltaicDebug.iml
File was deleted .idea/modules/app/PhotovoltaicDebug.app.iml
File was deleted .idea/vcs.xml
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="VcsDirectoryMappings"> <mapping directory="$PROJECT_DIR$" vcs="Git" /> <mapping directory="" vcs="Git" /> </component> </project> .idea/workspace.xml
File was deleted app/build.gradle
@@ -8,12 +8,12 @@ ] android { compileSdk 32 compileSdk 30 defaultConfig { applicationId "com.hdl.photovoltaic" minSdk 23 targetSdk 32 targetSdk 30 versionCode 1 versionName "1.0" @@ -72,9 +72,13 @@ androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' // implementation 'org.greenrobot:eventbus:3.0.0' implementation 'com.hdl.hdlhttp:hxhttp:1.0.4' //okhttp 打印 implementation 'com.squareup.okhttp3:logging-interceptor:4.9.1' //Eventbus事件发布与接收 implementation 'org.greenrobot:eventbus:3.3.1' //屏幕适配 implementation 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1' //********UniSDK必须添加的依赖 start******** app/src/main/AndroidManifest.xml
@@ -3,14 +3,11 @@ xmlns:tools="http://schemas.android.com/tools" package="com.hdl.photovoltaic"> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" tools:ignore="ProtectedPermissions" /> <!-- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />--> tools:ignore="ProtectedPermissions" /> <!-- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> --> <!-- <uses-permission android:name="android.permission.CAMERA" />--> <uses-permission android:name="android.permission.VIBRATE" /> <!-- <uses-permission android:name="android.permission.INTERNET" />--> <uses-permission android:name="android.permission.VIBRATE" /> <!-- <uses-permission android:name="android.permission.INTERNET" /> --> <!-- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />--> <!-- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />--> <!-- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />--> @@ -18,11 +15,8 @@ <!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />--> <!-- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />--> <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /> <!-- <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />--> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> <!-- wifi状态权限 --> <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /> <!-- <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> --> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> <!-- wifi状态权限 --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.INTERNET" /> <!-- 位置信息 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 如果是安卓10.0,需要后台获取连接的wifi名称则添加进程获取位置信息权限 --> @@ -72,8 +66,7 @@ <uses-permission android:name="com.hdl.debugtreasure.permission.JPUSH_MESSAGE" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <!-- 基座删除的部分权限 --> <uses-permission android:name="android.permission.BLUETOOTH" /> <application android:name=".HDLApp" @@ -84,6 +77,12 @@ android:supportsRtl="true" android:theme="@style/Theme.PhotovoltaicDebug"> <activity android:name=".ui.account.ChangePassword" android:exported="false" /> <activity android:name=".ui.account.RegisterAccountActivity" android:exported="false" /> <activity android:name=".ui.device.FastScanActivity" android:exported="false" /> <activity app/src/main/java/com/hdl/photovoltaic/HDLApp.java
@@ -10,6 +10,7 @@ import com.google.gson.Gson; import com.google.gson.JsonObject; import com.hdl.hdlhttp.HxHttpConfig; import com.hdl.linkpm.sdk.HDLLinkPMSdk; import com.hdl.linkpm.sdk.user.HDLLinkPMUser; import com.hdl.linkpm.sdk.user.callback.IOnReloginListener; @@ -36,6 +37,7 @@ import io.dcloud.feature.sdk.DCSDKInitConfig; import io.dcloud.feature.sdk.DCUniMPSDK; import io.dcloud.feature.sdk.Interface.IDCUniMPPreInitCallback; import okhttp3.logging.HttpLoggingInterceptor; public class HDLApp extends Application { //控制打印 Debug模式打印 @@ -111,6 +113,9 @@ initHDLLinkPMSdk(); HDLLinkLocalSdk.getInstance().init(getInstance()); initSocket(); //4.初始化OKHttpLog 是否开启 // setOKHttpLogOpen(isLogEnabled); } /** @@ -169,6 +174,16 @@ HDLUdpConnect.getInstance().initUdp(); } /** * 初始化OKHttpLog */ private void setOKHttpLogOpen(Boolean isOpen) { if (isOpen) { HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(); httpLoggingInterceptor.level(HttpLoggingInterceptor.Level.BODY); HxHttpConfig.getInstance().addInterceptor(httpLoggingInterceptor); } } // /** // * 初始化uni app mqtt // */ app/src/main/java/com/hdl/photovoltaic/internet/HttpClient.java
@@ -9,6 +9,7 @@ import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; import com.hdl.hdlhttp.HxHttp; import com.hdl.hdlhttp.HxHttpBuilder; import com.hdl.hdlhttp.utils.GsonConvert; import com.hdl.linkpm.sdk.core.api.HDLCloudUserApi; import com.hdl.linkpm.sdk.core.exception.HDLException; @@ -35,6 +36,7 @@ import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.Headers; import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; @@ -62,12 +64,16 @@ * 底层方法,引用库的方法 * * @param api 请求接口 * @param body 请求参数 * @param body 请求参数(appKey,timestamp,sign这三个参数内部会自动添加)) * @param callBack 回调 * @return - */ private Disposable request(String api, String body, CloudCallBeak<String> callBack) { String requestUrl = HDLCloudUserApi.getRequestUrl(api); Gson gson = new Gson(); System.out.println("发送->" + requestUrl + "\r\n" + body); return HxHttp.builder() .url(requestUrl) .raw(body) @@ -78,6 +84,8 @@ public void onResponse(String str) { if (callBack != null) { callBack.onSuccess(str); // System.out.println("回复->" + requestUrl + "\r\n" + gson.fromJson(str, JsonObject.class).toString()); System.out.println("回复->" + requestUrl + "\r\n" + str); } } @@ -86,11 +94,13 @@ HDLExceptionSubmitUtils.submit(requestUrl, body, e); if (callBack != null) { callBack.onFailure(e); System.out.println("回复->" + requestUrl + "\r\n" + "{code=" + e.getCode() + ",message=" + e.getMessage() + "}"); } } }); } /** * 请求服务器 @@ -114,7 +124,7 @@ @Deprecated private void requestHttp(String requestUrl, String json, boolean isBasicService, boolean isExecute, BaseSuccessFailureCallBeak baseSuccessCallBeak) { String fullUrl = AppConfigManage.getUserRegionUrl() + requestUrl; this.requestHttps(fullUrl, json, isBasicService, isExecute, baseSuccessCallBeak); this.requestHttpServer(fullUrl, json, isBasicService, isExecute, baseSuccessCallBeak); } /** @@ -128,7 +138,7 @@ */ @Deprecated private void requestFullHttp(String fullUrl, String json, boolean isBasicService, boolean isExecute, BaseSuccessFailureCallBeak baseSuccessCallBeak) { this.requestHttps(fullUrl, json, isBasicService, isExecute, baseSuccessCallBeak); this.requestHttpServer(fullUrl, json, isBasicService, isExecute, baseSuccessCallBeak); } /** @@ -139,7 +149,7 @@ * @param isBasicService 是否是基础服务的接口(基础服务的接口需要 appKey,timestamp,sign这三个参数,当为true时,内部会自动添加) * @param isExecute 是否是同步(true=同步,false=异步) */ private void requestHttps(String fullUrl, String json, boolean isBasicService, boolean isExecute, BaseSuccessFailureCallBeak baseSuccessCallBeak) { private void requestHttpServer(String fullUrl, String json, boolean isBasicService, boolean isExecute, BaseSuccessFailureCallBeak baseSuccessCallBeak) { new Thread(new Runnable() { @Override public void run() { app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
@@ -6,10 +6,10 @@ public static final String POST_RegionByUserAccount = "/smart-footstone/region/regionByUserAccount"; //登录接口 public static final String POST_Login = "/smart-footstone/user/oauth/login"; //发送消息验证码 public static final String POST_VERIFICATION_CODE_SEND = "/smart-footstone/verification/message/send"; //用户找回密码 忘记密码,通过邮箱和手机号找回 public static final String POST_FORGET_PROGRAM_PWD = "/smart-footstone/user/oauth/forgetProgramPwd"; //发送消息验证码 public static final String POST_SEND_VERIFICATION = "/smart-footstone/verification/message/send"; //更改个人密码 public static final String POST_UPDATE_PROGRAM_PASSWORD = "/smart-footstone/user/userInfo/updateProgramPassword"; //获取员工列表 app/src/main/java/com/hdl/photovoltaic/other/HdlAccountLogic.java
@@ -18,7 +18,7 @@ import java.util.regex.Pattern; /** * 登录界面的逻辑 * 账号逻辑 */ public class HdlAccountLogic { @@ -41,6 +41,7 @@ return sHdlAccountLogic; } // region --------【B端账号】--------- /** * 初始化账号的Url区域地址 @@ -101,6 +102,89 @@ } /** * 修改密码(B端账号) * * @param isPhone true表示手机号,否则是邮箱 * @param account 账号 (手机或者邮箱) * @param loginPwd 新密码 * @param verifyCode 验证码 * @param cloudCallBeak - */ public void changePassword(boolean isPhone, String account, String loginPwd, String verifyCode, CloudCallBeak<Boolean> cloudCallBeak) { String requestUrl = HttpApi.POST_FORGET_PROGRAM_PWD; JsonObject json = new JsonObject(); if (isPhone) { json.addProperty("userPhone", account);//用户手机号 手机号和邮箱必填其一 } else { json.addProperty("userEmail", account); } json.addProperty("loginPwd", loginPwd);//新密码 json.addProperty("verifyCode", verifyCode);//验证码 // json.addProperty("platform", "APP"); json.addProperty("grantType", "password"); 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); } } }); } /** * 修改密码(B端账号) * * @param isPhone true表示手机号,否则是邮箱 * @param account 账号 (手机或者邮箱) * @param phonePrefix 手机号前缀 * @param verifyType 1:注册 2:找回密码 3:绑定4:验证码登陆 5:敏感数据 * @param cloudCallBeak - */ public void sendVerifyCode(boolean isPhone, String account, String phonePrefix, int verifyType, CloudCallBeak<Boolean> cloudCallBeak) { String requestUrl = HttpApi.POST_SEND_VERIFICATION; JsonObject json = new JsonObject(); if (isPhone) { json.addProperty("phone", account);//用户手机号 json.addProperty("phonePrefix", phonePrefix);//手机号前缀 } else { json.addProperty("mail", account);//邮箱 } json.addProperty("verifyType", verifyType);//1:注册 2:找回密码 3:绑定4:验证码登陆 5:敏感数据 // json.addProperty("languageType", loginPwd);//语言 // json.addProperty("expireSecond", expireSecond);//验证码过期时间(秒),默认5分钟 // json.addProperty("platform", "APP"); 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); } } }); } /** * 刷新Token(B端账号) * * @param account 手机或者邮箱 @@ -133,6 +217,12 @@ } // endregion // region --------【C端账号】--------- // endregion /** * 退出登录时调用,清除推送数据 */ app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
@@ -38,7 +38,7 @@ import io.reactivex.rxjava3.disposables.Disposable; /** * 设备逻辑的界面 * 设备逻辑 */ public class HdlDeviceLogic { private static volatile HdlDeviceLogic sHdlDeviceLogic; app/src/main/java/com/hdl/photovoltaic/other/HdlResidenceLogic.java
@@ -28,7 +28,7 @@ import java.util.concurrent.atomic.AtomicInteger; /** * 住宅逻辑界面 * 住宅逻辑 */ public class HdlResidenceLogic { app/src/main/java/com/hdl/photovoltaic/other/HdlThreadLogic.java
@@ -1,16 +1,13 @@ package com.hdl.photovoltaic.other; import android.app.Dialog; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.util.Log; import android.widget.Toast; import androidx.appcompat.app.AlertDialog; import com.hdl.photovoltaic.enums.ShowErrorMode; import com.hdl.photovoltaic.widget.ConfirmationDialog; import com.hdl.photovoltaic.widget.ConfirmationCancelDialog; import com.hdl.photovoltaic.widget.ConfirmationExceptionDialog; /** @@ -23,16 +20,16 @@ /** * 切换回主线程执行 * * @param run 回调 * @param runnable 回调 * @param context 上下文(不需要弹框填null) * @param showErrorMode 是否显示错误(不需要显示错误填null) */ public static void runMainThread(Runnable run, Context context, ShowErrorMode showErrorMode) { public static void runMainThread(Runnable runnable, Context context, ShowErrorMode showErrorMode) { try { if (Looper.myLooper() == Looper.getMainLooper()) { run.run(); runnable.run(); } else { handler.post(run); handler.post(runnable); } } catch (Exception e) { @@ -41,20 +38,22 @@ } /** * 子线程执行 * * @param run 回调 * @param runnable 回调 * @param context 上下文(不需要弹框填null) * @param showErrorMode 是否显示错误(不需要填null) */ public static void runThread(Runnable run, Context context, ShowErrorMode showErrorMode) { public static void runThread(Runnable runnable, Context context, ShowErrorMode showErrorMode) { new Thread(new Runnable() { @Override public void run() { try { run.run(); runnable.run(); } catch (Exception e) { exception(e, showErrorMode, context); } @@ -106,22 +105,22 @@ @Override public void run() { ConfirmationDialog confirmationDialog = new ConfirmationDialog(context); confirmationDialog.setTitle("提示"); confirmationDialog.setContent("很抱歉,程序出现错误了,点击\"确认\"获取更多详细错误信息."); confirmationDialog.setConfirmation("确认"); confirmationDialog.setCancel("取消"); confirmationDialog.show(); confirmationDialog.setNoOnclickListener(new ConfirmationDialog.onNoOnclickListener() { ConfirmationCancelDialog confirmationCancelDialog = new ConfirmationCancelDialog(context); confirmationCancelDialog.setTitle("提示"); confirmationCancelDialog.setContent("很抱歉,程序出现错误了,点击\"确认\"获取更多详细错误信息."); confirmationCancelDialog.setConfirmation("确认"); confirmationCancelDialog.setCancel("取消"); confirmationCancelDialog.show(); confirmationCancelDialog.setNoOnclickListener(new ConfirmationCancelDialog.onNoOnclickListener() { @Override public void Cancel() { confirmationDialog.dismiss(); confirmationCancelDialog.dismiss(); } }); confirmationDialog.setYesOnclickListener(new ConfirmationDialog.onYesOnclickListener() { confirmationCancelDialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() { @Override public void Confirm() { confirmationDialog.dismiss(); confirmationCancelDialog.dismiss(); ConfirmationExceptionDialog confirmationExceptionDialog = new ConfirmationExceptionDialog(context); // String s = getStackTrace(ex); String s = Log.getStackTraceString(ex); app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java
@@ -1,8 +1,7 @@ package com.hdl.photovoltaic.ui; import android.Manifest; import android.content.pm.PackageManager; import android.content.Intent; import android.os.Bundle; import android.text.Editable; import android.text.Spannable; @@ -17,42 +16,31 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.content.res.AppCompatResources; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.linkpm.sdk.user.HDLLinkPMUser; import com.hdl.linkpm.sdk.user.bean.HDLLoginBean; import com.hdl.linkpm.sdk.user.bean.HDLUserRegionBean; import com.hdl.linkpm.sdk.user.callback.ILoginCallBack; import com.hdl.photovoltaic.HDLApp; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.CustomBaseActivity; import com.hdl.photovoltaic.enums.ShowErrorMode; import com.hdl.photovoltaic.other.HdlFileLogic; import com.hdl.photovoltaic.other.HdlResidenceLogic; import com.hdl.photovoltaic.ui.account.ChangePassword; import com.hdl.photovoltaic.ui.account.RegisterAccountActivity; import com.hdl.photovoltaic.ui.bean.HouseIdBean; import com.hdl.photovoltaic.ui.bean.LoginUserBean; import com.hdl.photovoltaic.ui.bean.LoginUserRegionBean; import com.hdl.photovoltaic.config.AppConfigManage; import com.hdl.photovoltaic.databinding.ActivityHomeLoginBinding; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.other.HdlAccountLogic; import com.hdl.photovoltaic.other.HdlThreadLogic; import com.hdl.photovoltaic.ui.device.FastScanActivity; import com.hdl.photovoltaic.uni.HDLUniMP; import com.hdl.photovoltaic.utils.PermissionUtils; import com.hdl.photovoltaic.utils.WifiUtils; import org.json.JSONException; import org.json.JSONObject; import java.util.List; /** * 登录的界面 */ public class HomeLoginActivity extends CustomBaseActivity { private ActivityHomeLoginBinding viewBinding; @@ -206,7 +194,6 @@ // //隐私协议提示 // return; // } Log.d("测试中", "123456789"); showLoading(getString(R.string.home_login_登录中)); HdlAccountLogic.getInstance().regionByAccount(account, new CloudCallBeak<HDLUserRegionBean>() { @Override @@ -259,6 +246,24 @@ HdlFileLogic.getInstance().deleteDirectory(HdlFileLogic.getInstance().getCurrentHomeRootPath()); } }); //注册 viewBinding.homeLoginRegisterTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(HomeLoginActivity.this, RegisterAccountActivity.class); startActivity(intent); } }); //忘记密码 viewBinding.homeLoginForgetPasswordTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(HomeLoginActivity.this, ChangePassword.class); startActivity(intent); } }); } @@ -295,7 +300,7 @@ if (password.length() < 6 || password.length() > 16) { viewBinding.homeLoginLine2V.setBackgroundColor(getColor(R.color.text_D34545)); viewBinding.homeLoginPasswordTextErrorTv.setText(R.string.home_login_error_最少6_16个字符); viewBinding.homeLoginPasswordTextErrorTv.setText(R.string.home_login_error_6_16_str); return false; } return true; app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java
@@ -25,12 +25,14 @@ import java.nio.charset.StandardCharsets; /** * 我的电站界面 */ public class MyPowerStationActivity extends CustomBaseActivity { private ActivityMyPowerStationBinding viewBinding; private int currentFragmentIndex = 0; private int currentFragmentIndex = 1; private EventListener allTopicsListener; @@ -55,17 +57,25 @@ viewBinding.myPowerStationBottomIl1.clickTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { currentFragmentIndex = 0; bottomViewChangeOfStyle(); } }); viewBinding.myPowerStationBottomIl2.clickTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { currentFragmentIndex = 1; bottomViewChangeOfStyle(); } }); viewBinding.myMessageBottomIl2.clickTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { currentFragmentIndex = 2; bottomViewChangeOfStyle(); } }); viewBinding.myMeBottomIl3.clickTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { currentFragmentIndex = 3; bottomViewChangeOfStyle(); } }); } @@ -80,28 +90,43 @@ private void initView() { viewBinding.myPowerStationBottomIl1.titleTv.setText(R.string.my_power_station_电站); viewBinding.myPowerStationBottomIl2.titleTv.setText(R.string.my_power_station_我的); viewBinding.myMessageBottomIl2.titleTv.setText(R.string.message_消息); viewBinding.myMeBottomIl3.titleTv.setText(R.string.my_power_station_我的); this.bottomViewChangeOfStyle(); } private void bottomViewChangeOfStyle() { if (this.currentFragmentIndex == 0) { if (this.currentFragmentIndex == 1) { viewBinding.myPowerStationFcv1.setVisibility(View.VISIBLE); viewBinding.myPowerStationFcv2.setVisibility(View.GONE); viewBinding.myMessageFcv2.setVisibility(View.GONE); viewBinding.myMeFcv3.setVisibility(View.GONE); viewBinding.myPowerStationBottomIl1.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.selectedpowerstation)); viewBinding.myPowerStationBottomIl1.titleTv.setTextColor(getColor(R.color.text_90000000)); viewBinding.myPowerStationBottomIl2.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.unselectedme)); viewBinding.myPowerStationBottomIl2.titleTv.setTextColor(getColor(R.color.text_65000000)); } else { viewBinding.myMessageBottomIl2.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.message_unselected)); viewBinding.myMessageBottomIl2.titleTv.setTextColor(getColor(R.color.text_65000000)); viewBinding.myMeBottomIl3.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.unselectedme)); viewBinding.myMeBottomIl3.titleTv.setTextColor(getColor(R.color.text_65000000)); } else if (this.currentFragmentIndex == 2) { viewBinding.myPowerStationFcv1.setVisibility(View.GONE); viewBinding.myPowerStationFcv2.setVisibility(View.VISIBLE); viewBinding.myMessageFcv2.setVisibility(View.VISIBLE); viewBinding.myMeFcv3.setVisibility(View.GONE); viewBinding.myPowerStationBottomIl1.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.unselectedpowerstation)); viewBinding.myPowerStationBottomIl1.titleTv.setTextColor(getColor(R.color.text_65000000)); viewBinding.myPowerStationBottomIl2.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.selectedme)); viewBinding.myPowerStationBottomIl2.titleTv.setTextColor(getColor(R.color.text_90000000)); viewBinding.myMessageBottomIl2.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.message_select)); viewBinding.myMessageBottomIl2.titleTv.setTextColor(getColor(R.color.text_90000000)); viewBinding.myMeBottomIl3.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.unselectedme)); viewBinding.myMeBottomIl3.titleTv.setTextColor(getColor(R.color.text_65000000)); } else if (this.currentFragmentIndex == 3) { viewBinding.myPowerStationFcv1.setVisibility(View.GONE); viewBinding.myMessageFcv2.setVisibility(View.GONE); viewBinding.myMeFcv3.setVisibility(View.VISIBLE); viewBinding.myPowerStationBottomIl1.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.unselectedpowerstation)); viewBinding.myPowerStationBottomIl1.titleTv.setTextColor(getColor(R.color.text_65000000)); viewBinding.myMessageBottomIl2.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.message_unselected)); viewBinding.myMessageBottomIl2.titleTv.setTextColor(getColor(R.color.text_65000000)); viewBinding.myMeBottomIl3.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.selectedme)); viewBinding.myMeBottomIl3.titleTv.setTextColor(getColor(R.color.text_90000000)); } } app/src/main/java/com/hdl/photovoltaic/ui/account/ChangePassword.java
New file @@ -0,0 +1,494 @@ package com.hdl.photovoltaic.ui.account; import android.app.AppComponentFactory; import android.os.Bundle; import android.os.CountDownTimer; import android.text.Editable; import android.text.InputType; import android.text.TextUtils; import android.text.TextWatcher; import android.text.method.HideReturnsTransformationMethod; import android.text.method.PasswordTransformationMethod; import android.view.View; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.content.res.AppCompatResources; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.linkpm.sdk.user.HDLLinkPMUser; import com.hdl.linkpm.sdk.user.bean.HDLUserRegionBean; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.CustomBaseActivity; import com.hdl.photovoltaic.config.AppConfigManage; import com.hdl.photovoltaic.databinding.ActivityChangePasswordBinding; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.other.HdlAccountLogic; import com.hdl.photovoltaic.other.HdlThreadLogic; import com.hdl.photovoltaic.widget.ConfirmationCancelDialog; import com.hdl.photovoltaic.widget.ConfirmationTipDialog; /** * 修改账号界面 */ public class ChangePassword extends CustomBaseActivity { ActivityChangePasswordBinding viewBinding; private boolean isPhoneType = true; private String mPhoneAccount; private String mPhonePsw; private String mPhoneConfirmPsw; private String mPhoneVerificationCode; private String mMailAccount; private String mMailPsw; private String mMailConfirmPsw; private String mMailVerificationCode; @Override public Object getContentView() { viewBinding = ActivityChangePasswordBinding.inflate(getLayoutInflater()); return viewBinding.getRoot(); } @Override public void onBindView(Bundle savedInstanceState) { //初始化 initView(); //初始化界面监听器 initEvent(); } /** * 初始化界面 */ private void initView() { switchPhoneOrMailView(); } /** * 设置监听事件 */ private void initEvent() { //返回 viewBinding.changeBackTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); //切换手机号 viewBinding.changePhoneIc.underlineCl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { isPhoneType = true; switchPhoneOrMailView(); } }); //切换邮箱号 viewBinding.changeMailRl.underlineCl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { isPhoneType = false; switchPhoneOrMailView(); } }); //输入手机号或者邮箱 viewBinding.changeAccountEt.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { isCompleteEnabled(); } @Override public void afterTextChanged(Editable s) { } }); //手机号获取验证码 viewBinding.changePhoneVerificationTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sendVerification(); } }); //输入手机验证码 viewBinding.changePhoneVerificationEt.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { isCompleteEnabled(); } @Override public void afterTextChanged(Editable s) { } }); //邮箱获取验证码 viewBinding.changeMailVerificationTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sendVerification(); } }); //输入邮箱验证码 viewBinding.changeMailVerificationEt.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { isCompleteEnabled(); } @Override public void afterTextChanged(Editable s) { } }); //输入密码 viewBinding.changePswEt.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { isCompleteEnabled(); } @Override public void afterTextChanged(Editable s) { } }); //密码显示或者隐藏 viewBinding.changePswHideIv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (v.isSelected()) { v.setSelected(false); viewBinding.changePswHideIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.hide)); viewBinding.changePswEt.setTransformationMethod(PasswordTransformationMethod.getInstance()); } else { v.setSelected(true); viewBinding.changePswHideIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.show)); viewBinding.changePswEt.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); } //设置光标位置 if (!TextUtils.isEmpty(viewBinding.changePswEt.getText())) { viewBinding.changePswEt.setSelection(viewBinding.changePswEt.length()); } } }); //输入确认密码 viewBinding.changeConfirmPswEt.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { isCompleteEnabled(); } @Override public void afterTextChanged(Editable s) { } }); //确认密码显示或者隐藏 viewBinding.changeConfirmPswHideIv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (v.isSelected()) { v.setSelected(false); viewBinding.changeConfirmPswHideIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.hide)); viewBinding.changeConfirmPswEt.setTransformationMethod(PasswordTransformationMethod.getInstance()); } else { v.setSelected(true); viewBinding.changeConfirmPswHideIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.show)); viewBinding.changeConfirmPswEt.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); } //设置光标位置 if (!TextUtils.isEmpty(viewBinding.changeConfirmPswEt.getText())) { viewBinding.changeConfirmPswEt.setSelection(viewBinding.changeConfirmPswEt.length()); } } }); //重置密码 viewBinding.confirmTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!isLocalCheckAccountAndPassword()) { return; } String account = viewBinding.changeAccountEt.getText().toString(); String psw = viewBinding.changeConfirmPswEt.getText().toString(); String verification_code; if (isPhoneType) { verification_code = viewBinding.changePhoneVerificationEt.getText().toString(); } else { verification_code = viewBinding.changeMailVerificationEt.getText().toString(); } HdlAccountLogic.getInstance().changePassword(isPhoneType, account, psw, verification_code, new CloudCallBeak<Boolean>() { @Override public void onSuccess(Boolean obj) { HdlThreadLogic.runMainThread(new Runnable() { @Override public void run() { ConfirmationTipDialog dialog = new ConfirmationTipDialog(_mActivity); dialog.show(); dialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() { @Override public void Confirm() { finish(); } }); } }, null, null); } @Override public void onFailure(HDLException e) { } }); } }); } /** * 发送验证码指令 */ private void sendVerification() { String account = viewBinding.changeAccountEt.getText().toString(); if (TextUtils.isEmpty(account)) { if (isPhoneType) { viewBinding.textErrorTv.setText(R.string.home_login_phone_null); } else { viewBinding.textErrorTv.setText(R.string.home_login_mail_null); } return; } HdlAccountLogic.getInstance().regionByAccount(account, new CloudCallBeak<HDLUserRegionBean>() { @Override public void onSuccess(HDLUserRegionBean obj) { AppConfigManage.setUserRegionUrl(obj.getRegionUrl()); HDLLinkPMUser.getInstance().setUserRegionUrl(AppConfigManage.getUserRegionUrl()); HdlAccountLogic.getInstance().sendVerifyCode(isPhoneType, account, "86", 2, new CloudCallBeak<Boolean>() { @Override public void onSuccess(Boolean obj) { if (isPhoneType) { phoneCountDownTimer.start(); } else { mailCountDownTimer.start(); } } @Override public void onFailure(HDLException e) { } }); } @Override public void onFailure(HDLException e) { hideLoading(); } }); } /** * 初始化手机号计时器 */ CountDownTimer phoneCountDownTimer = 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.changePhoneVerificationTv.setText(str); viewBinding.changePhoneVerificationTv.setTextColor(getResources().getColor(R.color.text_25000000)); viewBinding.changePhoneVerificationTv.setEnabled(false); } @Override public void onFinish() { viewBinding.changePhoneVerificationTv.setText(getString(R.string.home_login_verification_regain)); viewBinding.changePhoneVerificationTv.setTextColor(getResources().getColor(R.color.text_245EC3)); viewBinding.changePhoneVerificationTv.setEnabled(true); } }; /** * 初始化邮箱计时器 */ CountDownTimer mailCountDownTimer = 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.changeMailVerificationTv.setText(str); viewBinding.changeMailVerificationTv.setTextColor(getResources().getColor(R.color.text_25000000)); viewBinding.changeMailVerificationTv.setEnabled(false); } @Override public void onFinish() { viewBinding.changeMailVerificationTv.setText(getString(R.string.home_login_verification_regain)); viewBinding.changeMailVerificationTv.setTextColor(getResources().getColor(R.color.text_245EC3)); viewBinding.changeMailVerificationTv.setEnabled(true); } }; /** * 切换手机号或者邮箱的样式 */ private void switchPhoneOrMailView() { if (isPhoneType) { //手机号 viewBinding.changePhoneIc.accountTitleTv.setText(R.string.home_login_手机号); viewBinding.changePhoneIc.accountTitleTv.setTextSize(20); viewBinding.changePhoneIc.accountTitleTv.setTextColor(getResources().getColor(R.color.text_90000000)); viewBinding.changePhoneIc.lineV.setVisibility(View.VISIBLE); viewBinding.changeMailRl.accountTitleTv.setText(R.string.home_login_邮箱); viewBinding.changeMailRl.accountTitleTv.setTextSize(16); viewBinding.changeMailRl.accountTitleTv.setTextColor(getResources().getColor(R.color.text_40000000)); viewBinding.changeMailRl.lineV.setVisibility(View.GONE); //输入手机号 viewBinding.changeAccountEt.setInputType(InputType.TYPE_CLASS_NUMBER); viewBinding.changeAccountEt.setHint(R.string.home_login_请输入手机号); //显示手机号验证码,隐藏邮箱验证码, viewBinding.changePhoneVerificationCodeRl.setVisibility(View.VISIBLE); viewBinding.changeMailVerificationCodeRl.setVisibility(View.GONE); //记录邮箱账号和密码 mMailAccount = viewBinding.changeAccountEt.getText().toString(); mMailVerificationCode = viewBinding.changePhoneVerificationEt.getText().toString(); mMailPsw = viewBinding.changePswEt.getText().toString(); mMailConfirmPsw = viewBinding.changeConfirmPswEt.getText().toString(); //显示旧数据 viewBinding.changeAccountEt.setText(mPhoneAccount); viewBinding.changePhoneVerificationEt.setText(mPhoneVerificationCode); viewBinding.changePswEt.setText(mPhonePsw); viewBinding.changeConfirmPswEt.setText(mPhoneConfirmPsw); } else { //邮箱 viewBinding.changePhoneIc.accountTitleTv.setText(R.string.home_login_手机号); viewBinding.changePhoneIc.accountTitleTv.setTextSize(16); viewBinding.changePhoneIc.accountTitleTv.setTextColor(getResources().getColor(R.color.text_40000000)); viewBinding.changePhoneIc.lineV.setVisibility(View.GONE); viewBinding.changeMailRl.accountTitleTv.setText(R.string.home_login_邮箱); viewBinding.changeMailRl.accountTitleTv.setTextSize(20); viewBinding.changeMailRl.accountTitleTv.setTextColor(getResources().getColor(R.color.text_90000000)); viewBinding.changeMailRl.lineV.setVisibility(View.VISIBLE); //输入邮箱 viewBinding.changeAccountEt.setInputType(InputType.TYPE_CLASS_TEXT); viewBinding.changeAccountEt.setHint(R.string.home_login_input_mail); //显示箱邮验证码,隐藏手机号验证码, viewBinding.changePhoneVerificationCodeRl.setVisibility(View.GONE); viewBinding.changeMailVerificationCodeRl.setVisibility(View.VISIBLE); //记录手机号和密码 mPhoneAccount = viewBinding.changeAccountEt.getText().toString(); mPhoneVerificationCode = viewBinding.changePhoneVerificationEt.getText().toString(); mPhonePsw = viewBinding.changePswEt.getText().toString(); mPhoneConfirmPsw = viewBinding.changeConfirmPswEt.getText().toString(); //显示旧数据 viewBinding.changeAccountEt.setText(mMailAccount); viewBinding.changeMailVerificationEt.setText(mMailVerificationCode); viewBinding.changePswEt.setText(mMailPsw); viewBinding.changeConfirmPswEt.setText(mMailConfirmPsw); } isCompleteEnabled(); } /** * 校验按钮是否启用 */ private void isCompleteEnabled() { String account = viewBinding.changeAccountEt.getText().toString(); String psw1 = viewBinding.changePswEt.getText().toString(); String psw2 = viewBinding.changeConfirmPswEt.getText().toString(); String verification_code; if (isPhoneType) { verification_code = viewBinding.changePhoneVerificationEt.getText().toString(); } else { verification_code = viewBinding.changeMailVerificationEt.getText().toString(); } boolean isEnabled = account.length() > 0 && psw1.length() > 0 && psw2.length() > 0 && verification_code.length() > 0; viewBinding.confirmTv.setEnabled(isEnabled); } /** * 本地校验输入账号或者密码是否正确 */ private boolean isLocalCheckAccountAndPassword() { String psw1 = viewBinding.changePswEt.getText().toString(); String psw2 = viewBinding.changeConfirmPswEt.getText().toString(); if (!psw1.equals(psw2)) { viewBinding.textErrorTv.setText(R.string.home_login_psw_unlikeliness); return false; } if (psw1.length() < 6 || psw1.length() > 16) { viewBinding.textErrorTv.setText(R.string.home_login_error_6_16_str); return false; } // if (psw2.length() < 6 || psw2.length() > 16) { // viewBinding.textErrorTv.setText(R.string.home_login_error_6_16_str); // return false; // } return true; } @Override protected void onDestroy() { super.onDestroy(); if (phoneCountDownTimer != null) { phoneCountDownTimer.cancel(); phoneCountDownTimer = null; } if (mailCountDownTimer != null) { mailCountDownTimer.cancel(); mailCountDownTimer = null; } } } app/src/main/java/com/hdl/photovoltaic/ui/account/RegisterAccountActivity.java
New file @@ -0,0 +1,112 @@ package com.hdl.photovoltaic.ui.account; import android.os.Bundle; import android.view.View; import androidx.constraintlayout.widget.ConstraintSet; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.CustomBaseActivity; import com.hdl.photovoltaic.databinding.ActivityRegisterAccountBinding; import com.hdl.photovoltaic.utils.KeyboardStateObserverUtils; /** * 注册账号界面 */ public class RegisterAccountActivity extends CustomBaseActivity { private ActivityRegisterAccountBinding viewBinding; @Override public Object getContentView() { viewBinding = ActivityRegisterAccountBinding.inflate(getLayoutInflater()); return viewBinding.getRoot(); } @Override public void onBindView(Bundle savedInstanceState) { //初始化 initView(); //初始化界面监听器 initEvent(); KeyboardStateObserverUtils.getKeyboardStateObserver(_mActivity).setKeyboardVisibilityListener(new KeyboardStateObserverUtils.OnKeyboardVisibilityListener() { @Override public void onKeyboardShow(int h) { ConstraintSet cs = new ConstraintSet(); cs.clone(viewBinding.parentCl); cs.connect(viewBinding.registerConfirmPswEt.getId(), ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM, px2dip(h)) ;// //应用约束 cs.applyTo(viewBinding.parentCl); } @Override public void onKeyboardHide(int h) { ConstraintSet cs = new ConstraintSet(); cs.clone(viewBinding.parentCl); cs.connect(viewBinding.registerConfirmPswEt.getId(), ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM, px2dip(h));// //应用约束 cs.applyTo(viewBinding.parentCl); } }); } private void initView() { viewBinding.registerPhoneTitleIc.accountTitleTv.setText(R.string.home_login_手机号); viewBinding.registerPhoneTitleIc.accountTitleTv.setTextSize(20); viewBinding.registerPhoneTitleIc.accountTitleTv.setTextColor(getResources().getColor(R.color.text_90000000)); viewBinding.registerPhoneTitleIc.lineV.setVisibility(View.VISIBLE); viewBinding.registerMailTitleIc.accountTitleTv.setText(R.string.home_login_邮箱); viewBinding.registerMailTitleIc.accountTitleTv.setTextSize(16); viewBinding.registerMailTitleIc.accountTitleTv.setTextColor(getResources().getColor(R.color.text_40000000)); viewBinding.registerMailTitleIc.lineV.setVisibility(View.GONE); } private void initEvent() { viewBinding.registerBackTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); viewBinding.registerPhoneTitleIc.underlineCl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { viewBinding.registerPhoneTitleIc.accountTitleTv.setText(R.string.home_login_手机号); viewBinding.registerPhoneTitleIc.accountTitleTv.setTextSize(20); viewBinding.registerPhoneTitleIc.accountTitleTv.setTextColor(getResources().getColor(R.color.text_90000000)); viewBinding.registerPhoneTitleIc.lineV.setVisibility(View.VISIBLE); viewBinding.registerMailTitleIc.accountTitleTv.setText(R.string.home_login_邮箱); viewBinding.registerMailTitleIc.accountTitleTv.setTextSize(16); viewBinding.registerMailTitleIc.accountTitleTv.setTextColor(getResources().getColor(R.color.text_40000000)); viewBinding.registerMailTitleIc.lineV.setVisibility(View.GONE); } }); viewBinding.registerMailTitleIc.underlineCl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { viewBinding.registerPhoneTitleIc.accountTitleTv.setText(R.string.home_login_手机号); viewBinding.registerPhoneTitleIc.accountTitleTv.setTextSize(16); viewBinding.registerPhoneTitleIc.accountTitleTv.setTextColor(getResources().getColor(R.color.text_40000000)); viewBinding.registerPhoneTitleIc.lineV.setVisibility(View.GONE); viewBinding.registerMailTitleIc.accountTitleTv.setText(R.string.home_login_邮箱); viewBinding.registerMailTitleIc.accountTitleTv.setTextSize(20); viewBinding.registerMailTitleIc.accountTitleTv.setTextColor(getResources().getColor(R.color.text_90000000)); viewBinding.registerMailTitleIc.lineV.setVisibility(View.VISIBLE); } }); } } app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java
New file @@ -0,0 +1,37 @@ package com.hdl.photovoltaic.ui.message; import android.os.Bundle; import android.view.LayoutInflater; import com.hdl.photovoltaic.base.CustomBaseFragment; import com.hdl.photovoltaic.databinding.FragmentMessageBinding; public class MessageFragment extends CustomBaseFragment { private FragmentMessageBinding viewBinding; @Override public Object getContentView() { viewBinding = FragmentMessageBinding.inflate(getLayoutInflater()); return viewBinding.getRoot(); } @Override public void onBindView(Bundle savedInstanceState) { //初始化数据 initData(); //初始化界面 initView(); //初始化监听器 initEvent(); } private void initEvent() { } private void initView() { } private void initData() { } } app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationCancelDialog.java
File was renamed from app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationDialog.java @@ -9,13 +9,13 @@ import androidx.annotation.NonNull; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.databinding.LoadingConfirmBinding; import com.hdl.photovoltaic.databinding.DialogConfirmCancelBinding; /** * 确认框 * 确认取消框 */ public class ConfirmationDialog extends Dialog { public ConfirmationDialog(@NonNull Context context) { public class ConfirmationCancelDialog extends Dialog { public ConfirmationCancelDialog(@NonNull Context context) { super(context, R.style.Custom_Dialog); this.mContext = context; } @@ -23,14 +23,14 @@ private final Context mContext; private onNoOnclickListener noOnclickListener;//取消按钮被点击了的监听器 private onYesOnclickListener yesOnclickListener;//确定按钮被点击了的监听器 private LoadingConfirmBinding viewBinding; private DialogConfirmCancelBinding viewBinding; private String titleStr, contentStr, yesStr, noStr; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); viewBinding = LoadingConfirmBinding.inflate(getLayoutInflater()); viewBinding = DialogConfirmCancelBinding.inflate(getLayoutInflater()); setContentView(viewBinding.getRoot()); // setCancelable(true);//系统后退可以取消 //空白处不能取消动画 app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationExceptionDialog.java
@@ -12,14 +12,14 @@ import androidx.appcompat.content.res.AppCompatResources; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.databinding.LoadingExceptionLogBinding; import com.hdl.photovoltaic.databinding.DialogExceptionLogBinding; /** * 异常弹窗 */ public class ConfirmationExceptionDialog extends Dialog { private LoadingExceptionLogBinding viewBinding; private DialogExceptionLogBinding viewBinding; private final Context mContext; private String contentStr; @@ -31,7 +31,7 @@ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); viewBinding = LoadingExceptionLogBinding.inflate(getLayoutInflater()); viewBinding = DialogExceptionLogBinding.inflate(getLayoutInflater()); setContentView(viewBinding.getRoot()); // Window window = getWindow(); // window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT); app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationInputDialog.java
@@ -14,7 +14,7 @@ import androidx.constraintlayout.widget.ConstraintSet; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.databinding.LoadingConfirmInputBinding; import com.hdl.photovoltaic.databinding.DialogConfirmInputBinding; import com.hdl.photovoltaic.utils.KeyboardStateObserverUtils; /** @@ -30,13 +30,13 @@ private final Context mContext; private onNoOnclickListener noOnclickListener;//取消按钮被点击了的监听器 private onYesOnclickListener yesOnclickListener;//确定按钮被点击了的监听器 private LoadingConfirmInputBinding viewBinding; private DialogConfirmInputBinding viewBinding; private String titleStr, yesStr, noStr; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); viewBinding = LoadingConfirmInputBinding.inflate(getLayoutInflater()); viewBinding = DialogConfirmInputBinding.inflate(getLayoutInflater()); setContentView(viewBinding.getRoot()); // setCancelable(true);//系统后退可以取消 //空白处不能取消动画 app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationTipDialog.java
New file @@ -0,0 +1,94 @@ 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.DialogConfirmationTipBinding; /** * 提示确认框 */ public class ConfirmationTipDialog extends Dialog { private final Context mContext; private ConfirmationCancelDialog.onYesOnclickListener yesOnclickListener;//确定按钮被点击了的监听器 private DialogConfirmationTipBinding viewBinding; private String titleStr; public ConfirmationTipDialog(@NonNull Context context) { super(context, R.style.Custom_Dialog); this.mContext = context; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); viewBinding = DialogConfirmationTipBinding.inflate(getLayoutInflater()); setContentView(viewBinding.getRoot()); //空白处不能取消动画 setCanceledOnTouchOutside(false); //初始化界面控件 initView(); //初始化界面数据 initData(); //初始化界面控件的事件 initEvent(); } private void initView() { } private void initEvent() { viewBinding.comfirmTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (yesOnclickListener != null) { yesOnclickListener.Confirm(); } dismiss(); } }); } /** * 自定义"标题"文本 * * @param title 内容 */ public void setTitle(String title) { if (TextUtils.isEmpty(title)) { return; } titleStr = title; if (viewBinding != null) { viewBinding.titleTv.setText(titleStr); } } private void initData() { if (!TextUtils.isEmpty(titleStr)) { viewBinding.titleTv.setText(titleStr); } } public void setYesOnclickListener(ConfirmationCancelDialog.onYesOnclickListener yesOnclickListener) { if (yesOnclickListener != null) { this.yesOnclickListener = yesOnclickListener; } } public interface onYesOnclickListener { void Confirm(); } } app/src/main/res/drawable/back.pngapp/src/main/res/drawable/confirmation_bj.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/text_FFFFFFFF" /> <corners android:radius="@dimen/dp_4" /> </shape> app/src/main/res/drawable/message_select.png
app/src/main/res/drawable/message_unselected.png
app/src/main/res/drawable/red_font.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="#FF3030" /> <corners android:radius="@dimen/dp_8" /> </shape> app/src/main/res/drawable/region.pngapp/src/main/res/drawable/spinner.png
app/src/main/res/drawable/succeed.png
app/src/main/res/layout/activity_change_password.xml
New file @@ -0,0 +1,315 @@ <?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.account.ChangePassword"> <TextView android:id="@+id/change_back_tv" android:layout_width="@dimen/dp_24" android:layout_height="@dimen/dp_24" android:layout_marginStart="@dimen/dp_16" android:layout_marginTop="@dimen/dp_12" android:background="@drawable/back" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/change_title_tv" android:layout_width="wrap_content" android:layout_height="@dimen/dp_39" android:layout_marginStart="@dimen/dp_20" android:layout_marginTop="@dimen/dp_42" android:text="@string/home_login_修改密码" android:textAlignment="center" android:textColor="@color/text_90000000" android:textSize="@dimen/text_28" android:textStyle="bold" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/change_back_tv" /> <!--手机号--> <include android:id="@+id/change_phone_ic" layout="@layout/text_underline" android:layout_width="wrap_content" android:layout_height="@dimen/dp_31" android:layout_marginTop="@dimen/dp_52" app:layout_constraintStart_toStartOf="@+id/change_title_tv" app:layout_constraintTop_toBottomOf="@+id/change_title_tv" /> <!--邮箱--> <include android:id="@+id/change_mail_rl" layout="@layout/text_underline" android:layout_width="wrap_content" android:layout_height="@dimen/dp_31" android:layout_marginStart="@dimen/dp_28" android:layout_marginTop="@dimen/dp_52" app:layout_constraintStart_toEndOf="@+id/change_phone_ic" app:layout_constraintTop_toBottomOf="@+id/change_title_tv" /> <RelativeLayout android:id="@+id/change_account_rl" android:layout_width="match_parent" android:layout_height="@dimen/dp_60" android:layout_marginTop="102.5dp" app:layout_constraintStart_toStartOf="@+id/change_title_tv" app:layout_constraintTop_toBottomOf="@+id/change_title_tv"> <EditText android:id="@+id/change_account_et" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginStart="@dimen/dp_20" android:layout_marginEnd="@dimen/dp_60" android:background="@null" android:hint="@string/home_login_请输入手机号" 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" /> </RelativeLayout> <!--手机获取验证码--> <RelativeLayout android:id="@+id/change_phone_verification_code_rl" android:layout_width="match_parent" android:layout_height="@dimen/dp_60" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/change_account_rl"> <TextView android:id="@+id/change_phone_verification_tv" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentEnd="true" android:layout_marginEnd="@dimen/dp_20" android:gravity="center" android:padding="@dimen/dp_16" android:text="@string/home_login_验证码" android:textColor="@color/text_245EC3" android:textSize="@dimen/text_14" /> <View android:id="@+id/change_phone_verification_v" android:layout_width="0.5dp" android:layout_height="20dp" android:layout_alignStart="@+id/change_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/change_phone_verification_v" android:layout_alignParentStart="true" android:layout_marginStart="@dimen/dp_20" android:background="@null" android:hint="@string/home_login_input_验证码" 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" /> </RelativeLayout> <!--邮箱获取验证码--> <RelativeLayout android:id="@+id/change_mail_verification_code_rl" android:layout_width="match_parent" android:layout_height="@dimen/dp_60" android:visibility="gone" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/change_account_rl"> <TextView android:id="@+id/change_mail_verification_tv" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentEnd="true" android:layout_marginEnd="@dimen/dp_20" android:gravity="center" android:padding="@dimen/dp_16" android:text="@string/home_login_send_mail" android:textColor="@color/text_245EC3" android:textSize="@dimen/text_14" /> <View android:id="@+id/change_mail_verification_v" android:layout_width="0.5dp" android:layout_height="20dp" android:layout_alignStart="@+id/change_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/change_mail_verification_v" android:layout_alignParentStart="true" android:layout_marginStart="@dimen/dp_20" android:background="@null" android:hint="@string/home_login_input_验证码" 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" /> </RelativeLayout> <RelativeLayout android:id="@+id/change_psw_rl" android:layout_width="match_parent" android:layout_height="@dimen/dp_60" android:layout_marginTop="@dimen/dp_60" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/change_account_rl"> <EditText android:id="@+id/change_psw_et" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginStart="@dimen/dp_20" android:layout_marginEnd="@dimen/dp_60" android:background="@null" android:hint="@string/home_login_input_6_16" android:inputType="textPassword" 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/change_psw_hide_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_32" android:src="@drawable/hide" /> <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" /> </RelativeLayout> <RelativeLayout android:id="@+id/change_confirm_psw_rl" android:layout_width="match_parent" android:layout_height="@dimen/dp_60" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/change_psw_rl"> <EditText android:id="@+id/change_confirm_psw_et" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginStart="@dimen/dp_20" android:layout_marginEnd="@dimen/dp_60" android:background="@null" android:hint="@string/home_login_confirm_psw" android:inputType="textPassword" 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/change_confirm_psw_hide_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_32" android:src="@drawable/hide" /> <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" /> </RelativeLayout> <TextView android:id="@+id/text_error_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_20" android:textColor="@color/text_D34545" android:textSize="12sp" app:layout_constraintStart_toStartOf="@+id/change_confirm_psw_rl" app:layout_constraintTop_toBottomOf="@+id/change_confirm_psw_rl" /> <TextView android:id="@+id/confirm_tv" android:layout_width="0dp" android:layout_height="52dp" android:layout_marginStart="@dimen/dp_20" android:layout_marginTop="@dimen/dp_42" android:layout_marginEnd="@dimen/dp_20" android:background="@drawable/yesandnocheck" android:enabled="false" android:gravity="center" android:text="@string/home_login_确认重置" android:textColor="@color/text_FFFFFFFF" android:textSize="18sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/change_confirm_psw_rl" /> </androidx.constraintlayout.widget.ConstraintLayout> app/src/main/res/layout/activity_home_login.xml
@@ -116,7 +116,7 @@ <View android:id="@+id/home_login_line1_v" android:layout_width="match_parent" android:layout_height="1dp" android:layout_height="0.5dp" android:layout_marginStart="@dimen/dp_20" android:layout_marginEnd="@dimen/dp_20" android:background="@color/text_E1E1E1" @@ -126,8 +126,8 @@ <TextView android:id="@+id/home_login_account_text_error_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_width="2dp" android:layout_height="14dp" android:layout_marginTop="2dp" android:textColor="@color/text_D34545" android:textSize="12sp" @@ -170,7 +170,7 @@ <View android:id="@+id/home_login_line2_v" android:layout_width="0dp" android:layout_height="1dp" android:layout_height="0.5dp" android:background="@color/text_E1E1E1" app:layout_constraintEnd_toEndOf="@+id/home_login_line1_v" app:layout_constraintStart_toStartOf="@+id/home_login_line1_v" @@ -208,11 +208,12 @@ app:layout_constraintEnd_toEndOf="@+id/home_login_line2_v" app:layout_constraintTop_toBottomOf="@+id/home_login_line2_v" /> <!--登录--> <TextView android:id="@+id/home_login_tv" android:layout_width="0dp" android:layout_height="52dp" android:layout_marginTop="@dimen/dp_45" android:layout_marginTop="44dp" android:background="@drawable/yesandnocheck" android:enabled="false" android:gravity="center" @@ -220,6 +221,7 @@ android:textColor="@color/text_FFFFFFFF" android:textSize="18sp" app:layout_constraintEnd_toEndOf="@+id/home_login_line2_v" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="@+id/home_login_line2_v" app:layout_constraintTop_toBottomOf="@+id/home_login_forget_password_tv" /> @@ -243,7 +245,7 @@ android:layout_marginTop="@dimen/dp_208" android:background="@drawable/yesandnoselected" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/home_login_tv" /> app:layout_constraintTop_toBottomOf="@+id/home_login_register_tv" /> <TextView android:id="@+id/home_login_privacy_tv" app/src/main/res/layout/activity_my_power_station.xml
@@ -7,7 +7,7 @@ android:background="@color/text_F9FAFB" tools:context="com.hdl.photovoltaic.ui.MyPowerStationActivity"> <!--我的电站-Fragment--> <!--电站列表-Fragment--> <androidx.fragment.app.FragmentContainerView android:id="@+id/my_power_station_fcv1" @@ -19,9 +19,21 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <!--消息-Fragment--> <androidx.fragment.app.FragmentContainerView android:id="@+id/my_message_fcv2" android:name="com.hdl.photovoltaic.ui.message.MessageFragment" android:layout_width="match_parent" android:layout_height="0dp" android:visibility="gone" app:layout_constraintBottom_toTopOf="@+id/my_power_station_bottom_ll" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <!--我的-Fragment--> <androidx.fragment.app.FragmentContainerView android:id="@+id/my_power_station_fcv2" android:id="@+id/my_me_fcv3" android:name="com.hdl.photovoltaic.ui.me.MeFragment" android:layout_width="match_parent" android:layout_height="0dp" @@ -36,7 +48,6 @@ android:layout_width="match_parent" android:layout_height="@dimen/dp_49" android:background="@color/text_FFFFFFFF" android:gravity="center" android:orientation="horizontal" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" @@ -44,16 +55,21 @@ <!--电站-标签--> <include android:id="@+id/my_power_station_bottom_il1" layout="@layout/home_bottom_line" /> <!--消息--> <include android:id="@+id/my_message_bottom_il2" layout="@layout/home_bottom_line" /> <View android:layout_width="@dimen/dp_1" android:layout_height="@dimen/dp_17" android:background="@color/text_CBCDD1" /> <!-- <View--> <!-- android:layout_width="@dimen/dp_1"--> <!-- android:layout_height="@dimen/dp_17"--> <!-- android:background="@color/text_CBCDD1" />--> <!--我的-标签--> <include android:id="@+id/my_power_station_bottom_il2" android:id="@+id/my_me_bottom_il3" layout="@layout/home_bottom_line" /> app/src/main/res/layout/activity_register_account.xml
New file @@ -0,0 +1,347 @@ <?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:id="@+id/parent_cl" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ui.account.RegisterAccountActivity"> <TextView android:id="@+id/register_back_tv" android:layout_width="@dimen/dp_24" android:layout_height="@dimen/dp_24" android:layout_marginStart="@dimen/dp_16" android:layout_marginTop="@dimen/dp_12" android:background="@drawable/back" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/register_title_tv" android:layout_width="wrap_content" android:layout_height="@dimen/dp_39" android:layout_marginStart="@dimen/dp_20" android:layout_marginTop="@dimen/dp_42" android:text="@string/home_login_注册" android:textAlignment="center" android:textColor="@color/text_90000000" android:textSize="@dimen/text_28" android:textStyle="bold" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/register_back_tv" /> <!--手机号--> <include android:id="@+id/register_phone_title_ic" layout="@layout/text_underline" android:layout_width="wrap_content" android:layout_height="@dimen/dp_31" android:layout_marginTop="@dimen/dp_52" app:layout_constraintStart_toStartOf="@+id/register_title_tv" app:layout_constraintTop_toBottomOf="@+id/register_title_tv" /> <!--邮箱--> <include android:id="@+id/register_mail_title_ic" layout="@layout/text_underline" android:layout_width="wrap_content" android:layout_height="@dimen/dp_31" android:layout_marginStart="@dimen/dp_28" android:layout_marginTop="@dimen/dp_52" app:layout_constraintStart_toEndOf="@+id/register_phone_title_ic" app:layout_constraintTop_toBottomOf="@+id/register_title_tv" /> <RelativeLayout android:id="@+id/register_region_server_rl" android:layout_width="match_parent" android:layout_height="@dimen/dp_60" android:layout_marginTop="102.5dp" app:layout_constraintStart_toStartOf="@+id/register_title_tv" app:layout_constraintTop_toBottomOf="@+id/register_title_tv"> <ImageView android:id="@+id/region_iv" android:layout_width="@dimen/dp_13" android:layout_height="@dimen/dp_13" android:layout_centerVertical="true" android:layout_marginStart="@dimen/dp_20" android:src="@drawable/region" /> <TextView android:id="@+id/region_tv" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginStart="@dimen/dp_10" android:layout_marginEnd="@dimen/dp_20" android:layout_toEndOf="@+id/region_iv" android:gravity="center_vertical" android:text="HDL China" android:textColor="@color/text_90000000" android:textSize="@dimen/text_16" /> <ImageView android:id="@+id/region_next_iv" android:layout_width="@dimen/dp_13" android:layout_height="@dimen/dp_13" android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:layout_marginEnd="@dimen/dp_26" android:src="@drawable/next" /> <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" /> </RelativeLayout> <RelativeLayout android:id="@+id/register_region_account_rl" android:layout_width="match_parent" android:layout_height="@dimen/dp_60" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/register_region_server_rl"> <TextView android:id="@+id/region_account_tv" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginStart="@dimen/dp_20" android:layout_marginEnd="@dimen/dp_150" android:gravity="center_vertical" android:text="中国大陆" android:textColor="@color/text_90000000" android:textSize="@dimen/text_16" /> <TextView android:id="@+id/region_account_number_tv" android:layout_width="@dimen/dp_90" android:layout_height="match_parent" android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:layout_marginEnd="@dimen/dp_58" android:gravity="center_vertical|end" android:text="+86" android:textColor="@color/text_030D1C" android:textSize="@dimen/text_16" /> <ImageView android:id="@+id/region_account_next_iv" android:layout_width="@dimen/dp_32" android:layout_height="@dimen/dp_32" android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:layout_marginEnd="@dimen/dp_26" android:src="@drawable/spinner" /> <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" /> </RelativeLayout> <RelativeLayout android:id="@+id/register_account_rl" android:layout_width="match_parent" android:layout_height="@dimen/dp_60" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/register_region_account_rl"> <EditText android:id="@+id/register_account_et" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginStart="@dimen/dp_20" android:layout_marginEnd="@dimen/dp_60" android:background="@null" android:hint="@string/home_login_请输入手机号" 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" /> </RelativeLayout> <RelativeLayout android:id="@+id/register_psw_rl" android:layout_width="match_parent" android:layout_height="@dimen/dp_60" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/register_account_rl"> <EditText android:id="@+id/register_psw_et" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginStart="@dimen/dp_20" android:layout_marginEnd="@dimen/dp_60" android:background="@null" android:hint="@string/home_login_input_6_16" android:inputType="textPassword" 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/register_psw_hide_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_32" android:src="@drawable/hide" /> <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" /> </RelativeLayout> <RelativeLayout android:id="@+id/register_confirm_psw_rl" android:layout_width="match_parent" android:layout_height="@dimen/dp_60" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/register_psw_rl"> <EditText android:id="@+id/register_confirm_psw_et" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginStart="@dimen/dp_20" android:layout_marginEnd="@dimen/dp_60" android:background="@null" android:hint="@string/home_login_confirm_psw" android:inputType="textPassword" 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/register_confirm_psw_hide_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_32" android:src="@drawable/hide" /> <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" /> </RelativeLayout> <RelativeLayout android:id="@+id/register_verification_code_rl" android:layout_width="match_parent" android:layout_height="@dimen/dp_60" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/register_confirm_psw_rl"> <TextView android:id="@+id/register_verification_tv" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentEnd="true" android:layout_marginEnd="@dimen/dp_20" android:gravity="center" android:padding="@dimen/dp_16" android:text="@string/home_login_验证码" android:textColor="@color/text_245EC3" android:textSize="@dimen/text_14" /> <View android:id="@+id/register_verification_v" android:layout_width="0.5dp" android:layout_height="20dp" android:layout_alignStart="@+id/register_verification_tv" android:layout_centerInParent="true" android:background="@color/text_E1E1E1" /> <EditText android:id="@+id/register_verification_et" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignStart="@+id/register_verification_v" android:layout_alignParentStart="true" android:layout_marginStart="@dimen/dp_20" android:background="@null" android:hint="@string/home_login_input_验证码" 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" /> </RelativeLayout> <TextView android:id="@+id/account_title_tv" android:layout_width="0dp" android:layout_height="52dp" android:layout_marginStart="@dimen/dp_20" android:layout_marginTop="@dimen/dp_42" android:layout_marginEnd="@dimen/dp_20" android:background="@drawable/yesandnocheck" android:enabled="false" android:gravity="center" android:text="@string/home_login_注册" android:textColor="@color/text_FFFFFFFF" android:textSize="18sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/register_verification_code_rl" /> </androidx.constraintlayout.widget.ConstraintLayout> app/src/main/res/layout/dialog_confirm_cancel.xml
app/src/main/res/layout/dialog_confirm_input.xml
app/src/main/res/layout/dialog_confirmation_tip.xml
New file @@ -0,0 +1,55 @@ <?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"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="280dp" android:layout_height="229dp" android:background="@drawable/confirmation_bj" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <TextView android:id="@+id/title_tv" android:layout_width="match_parent" android:layout_height="@dimen/dp_25" android:layout_marginTop="@dimen/dp_24" android:gravity="center" android:text="@string/home_login_pws_reset_succeeded" android:textColor="#222222" android:textSize="@dimen/text_18" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/icon_tv" android:layout_width="@dimen/dp_48" android:layout_height="@dimen/dp_48" android:layout_marginTop="@dimen/dp_28" android:background="@drawable/succeed" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/title_tv" /> <TextView android:id="@+id/comfirm_tv" android:layout_width="199dp" android:layout_height="@dimen/dp_52" android:layout_marginTop="@dimen/dp_28" android:background="@drawable/checked" android:gravity="center" android:text="@string/home_login_back_login" android:textColor="@color/ffffff" android:textSize="@dimen/text_18" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/icon_tv" /> </androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout> app/src/main/res/layout/dialog_exception_log.xml
app/src/main/res/layout/fragment_house_list.xml
@@ -8,7 +8,6 @@ <include android:id="@+id/toolbar_top_fragment_house_list_rl" layout="@layout/toolbar_top_view_52" /> <RelativeLayout android:id="@+id/fragment_house_list_head_rl" android:layout_width="match_parent" @@ -16,7 +15,9 @@ android:background="@color/text_F9FAFB" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/toolbar_top_fragment_house_list_rl"> app:layout_constraintTop_toBottomOf="@+id/toolbar_top_fragment_house_list_rl" android:visibility="gone" > <LinearLayout android:id="@+id/fragment_house_list_content_ll" app/src/main/res/layout/fragment_message.xml
New file @@ -0,0 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- <include--> <!-- android:id="@+id/toolbar_top_fragment_me_rl"--> <!-- layout="@layout/toolbar_top_view_52" />--> </androidx.constraintlayout.widget.ConstraintLayout> app/src/main/res/layout/frgment_house_list_line.xml
@@ -6,10 +6,12 @@ <RelativeLayout android:id="@+id/fragment_house_list_line_parent_rl" android:layout_width="0dp" android:layout_height="130dp" android:layout_alignParentStart="true" android:layout_alignParentEnd="true" android:layout_marginTop="@dimen/dp_12" android:layout_marginStart="@dimen/dp_20" android:layout_marginEnd="@dimen/dp_20" android:background="@drawable/house_list_line_parent_bg"> app/src/main/res/layout/home_bottom_line.xml
@@ -1,7 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="187dp" android:layout_height="@dimen/dp_49"> android:layout_width="0dp" android:layout_height="@dimen/dp_49" android:layout_weight="1" > <ImageView android:id="@+id/icon_iv" @@ -20,6 +22,15 @@ android:layout_marginTop="@dimen/dp_2" android:textColor="@color/text_90000000" android:textSize="@dimen/text_10" /> <TextView android:id="@+id/red_tv" android:layout_width="@dimen/dp_8" android:layout_height="@dimen/dp_8" android:background="@drawable/red_font" android:layout_alignEnd="@+id/icon_iv" android:layout_alignTop="@+id/icon_iv" android:visibility="gone" /> <!--加大点击热区--> <TextView android:id="@+id/click_tv" @@ -28,7 +39,9 @@ android:layout_alignParentStart="true" android:layout_alignParentEnd="true" android:layout_marginStart="@dimen/dp_30" android:layout_marginEnd="@dimen/dp_30" /> android:layout_marginEnd="@dimen/dp_30" /> </RelativeLayout> app/src/main/res/layout/text_underline.xml
New file @@ -0,0 +1,27 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/underline_cl" android:layout_width="wrap_content" android:layout_height="@dimen/dp_31"> <TextView android:id="@+id/account_title_tv" android:layout_width="wrap_content" android:layout_height="@dimen/dp_28" android:gravity="center" android:text="@string/home_login_手机号" android:textColor="@color/text_40000000" android:textSize="@dimen/text_16" /> <View android:id="@+id/line_v" android:layout_width="@dimen/dp_20" android:layout_height="3dp" android:layout_below="@+id/account_title_tv" android:layout_centerInParent="true" android:background="@color/text_245EC3" android:visibility="gone" /> </RelativeLayout> app/src/main/res/values/strings.xml
@@ -20,6 +20,7 @@ <string name="home_login_请输入密码">请输入密码</string> <string name="home_login_注册">注册</string> <string name="home_login_忘记密码">忘记密码</string> <string name="home_login_修改密码">修改密码</string> <string name="home_login_登录">登录</string> <string name="home_login_登录中">登录中…</string> <string name="home_login_体验电站">体验电站</string> @@ -27,9 +28,28 @@ <string name="home_login_error_账号不能为空">账号不能为空.</string> <string name="home_login_error_密码不能为空">密码不能为空.</string> <string name="home_login_error_账号或者密码不对">账号或者密码不对,请重新输入.</string> <string name="home_login_error_最少6_16个字符">密码不符合最低安全要求,最少6–16个字符.</string> <string name="home_login_error_6_16_str">密码不符合最低安全要求,最少6–16个字符.</string> <string name="home_login_error_密码不能小于6个字符">密码不能小于6个字符.</string> <string name="home_login_error_密码不能大于16个字符">密码不能大于16个字符.</string> <string name="home_login_input_6_16">请输入6–16位的密码</string> <string name="home_login_confirm_psw">请再次确认密码</string> <string name="home_login_手机号">手机号</string> <string name="home_login_邮箱">邮箱</string> <string name="home_login_input_mail">请输入邮箱</string> <string name="home_login_国家_区域">请选择国家/区域</string> <string name="home_login_验证码">获取验证码</string> <string name="home_login_input_验证码">请输入验证码</string> <string name="home_login_确认重置">确认重置</string> <string name="home_login_null_验证码">验证码不能为空.</string> <string name="home_login_phone_null">手机号不能为空.</string> <string name="home_login_mail_null">邮箱不能为空.</string> <string name="home_login_psw_unlikeliness">两次输入密码不一样.</string> <string name="home_login_psw_verification_repeater">后重发</string> <string name="home_login_verification_regain">重新获取</string> <string name="home_login_pws_reset_succeeded">密码重置成功</string> <string name="home_login_back_login">返回登录</string> <string name="home_login_send_mail">发送至邮箱</string> <!--我的电站--> <string name="my_power_station_电站">电站</string> @@ -48,6 +68,8 @@ <string name="device_手动连接">手动连接</string> <string name="device_加载中">加载中…</string> <!--消息--> <string name="message_消息">消息</string> <!--我的--> <string name="me_我的">我的</string> local.properties
@@ -4,5 +4,5 @@ # Location of the SDK. This is only used by Gradle. # For customization when using a Version Control System, please read the # header note. #Thu Jun 29 18:00:39 CST 2023 sdk.dir=/Users/wenjucheng/Library/Android/sdk #Sun Aug 06 16:06:53 CST 2023 sdk.dir=/Users/user/Library/Android/sdk