From 12d6db5780d8a2121a3bef2d58bf897b24ff552a Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期三, 12 六月 2024 15:54:29 +0800 Subject: [PATCH] Merge branch 'dev' --- app/src/main/java/com/hdl/photovoltaic/ui/LoginActivity.java | 579 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 579 insertions(+), 0 deletions(-) diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/LoginActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/LoginActivity.java new file mode 100644 index 0000000..01db257 --- /dev/null +++ b/app/src/main/java/com/hdl/photovoltaic/ui/LoginActivity.java @@ -0,0 +1,579 @@ +package com.hdl.photovoltaic.ui; + + +import android.content.Intent; +import android.os.Bundle; +import android.text.Editable; +import android.text.SpannableStringBuilder; +import android.text.TextPaint; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.text.method.HideReturnsTransformationMethod; +import android.text.method.LinkMovementMethod; +import android.text.method.PasswordTransformationMethod; +import android.text.style.ClickableSpan; +import android.view.View; +import android.widget.TextView; + + +import androidx.annotation.NonNull; +import androidx.appcompat.content.res.AppCompatResources; + +import com.hdl.linkpm.sdk.HDLLinkPMSdk; +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.config.UserConfigManage; +import com.hdl.photovoltaic.databinding.ActivityHomeLoginBinding; +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.adapter.LanguageAdapter; +import com.hdl.photovoltaic.ui.bean.HouseIdBean; +import com.hdl.photovoltaic.config.AppConfigManage; +import com.hdl.photovoltaic.listener.CloudCallBeak; +import com.hdl.photovoltaic.other.HdlAccountLogic; +import com.hdl.photovoltaic.other.HdlThreadLogic; +import com.hdl.photovoltaic.ui.me.WebActivity; +import com.hdl.photovoltaic.utils.AppManagerUtils; +import com.hdl.photovoltaic.utils.LocalManageUtil; +import com.hdl.photovoltaic.utils.TimeUtils; +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 java.util.List; + +/** + * 鐧诲綍鐨勭晫闈� + */ +public class LoginActivity extends CustomBaseActivity { + + private ActivityHomeLoginBinding viewBinding; + + @Override + public Object getContentView() { + + setNotificationBarBackgroundColor(CustomColor.blue); + viewBinding = ActivityHomeLoginBinding.inflate(getLayoutInflater()); + return viewBinding.getRoot(); + } + + @Override + public void onBindView(Bundle savedInstanceState) { + setStatusBarTranslucent(); + //鍒濆鍖� + initView(); + //鍒濆鍖栫晫闈㈢洃鍚櫒 + initEvent(); + //鍦ㄧ晫闈腑浣跨敤 +// KeyboardStateObserverUtils.getKeyboardStateObserver(_mActivity).setKeyboardVisibilityListener(new KeyboardStateObserverUtils.OnKeyboardVisibilityListener() { +// @Override +// public void onKeyboardShow(int h) { +// //Toast.makeText(MainActivity.this,"閿洏寮瑰嚭",Toast.LENGTH_SHORT).show(); +// ConstraintSet cs = new ConstraintSet(); +// cs.clone(viewBinding.homeLoginParentCl); +//// (viewBinding.loadingConfirmationRl.getTop()-dip2px(h)) +// cs.connect(R.id.home_login_tv, ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM, h);// +// //搴旂敤绾︽潫 +// cs.applyTo(viewBinding.homeLoginParentCl); +// } +// +// @Override +// +// public void onKeyboardHide(int h) { +// ConstraintSet cs = new ConstraintSet(); +// cs.clone(viewBinding.homeLoginParentCl); +// cs.connect(R.id.home_login_tv, ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM, h);// +// //搴旂敤绾︽潫 +// cs.applyTo(viewBinding.homeLoginParentCl); +// } +// +// }); + + + } + + /** + * 鍒濆鍖朥I + */ + private void initView() { + viewBinding.homeLoginCheckBCCl.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"); + } + if (UserConfigManage.getInstance().isBAccount()) { + viewBinding.homeLoginRegisterTv.setVisibility(View.GONE); + } else { + viewBinding.homeLoginRegisterTv.setVisibility(View.VISIBLE); + } + +// String acc = "13375012441"; +//// String acc = "18316672920"; +//// String acc = "nuy13368@uzxia.com";脽 +// String pws = "123456"; +// //娴嬭瘯鐢� +// viewBinding.homeLoginAccountEt.setText(acc); +// viewBinding.homeLoginPasswordEt.setText(pws); + isLoginTextViewEnabled(); + } + + /** + * 娉ㄥ唽鐩戝惉浜嬩欢 + */ + private void initEvent() { + + viewBinding.homeLoginMoreIv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + HdlThreadLogic.toast(_mActivity, getString(R.string.loading_not_supported)); + } + }); + //璇█閫夋嫨 + 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, LanguageAdapter.ItemData itemData) { + UserConfigManage.getInstance().setCurrentAppLanguage(itemData.getLanguage()); + UserConfigManage.getInstance().Save(); + //閰嶇疆鎺ュ彛璇锋眰璇█ + HDLLinkPMSdk.setLanguage(UserConfigManage.getInstance().getCurrentAppLanguage()); + listDialog.dismiss(); + AppManagerUtils.getAppManager().finishAllActivity(); + Intent intent = new Intent(); + intent.setClass(HDLApp.getInstance(), StartActivity.class); + startActivity(intent); + viewBinding.homeLoginLanguageTv.setText(itemData.getTitle()); + } + }); + } + }); + + viewBinding.homeLoginAccountEt.addTextChangedListener(accountTextWatcher); + viewBinding.homeLoginClearContentsIv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + viewBinding.homeLoginAccountEt.setText(""); + } + }); + + viewBinding.homeLoginPasswordEt.addTextChangedListener(passwordTextWatcher); + viewBinding.homeLoginHideIv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (v.isSelected()) { + v.setSelected(false); + viewBinding.homeLoginHideIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.hide)); + viewBinding.homeLoginPasswordEt.setTransformationMethod(PasswordTransformationMethod.getInstance()); + } else { + v.setSelected(true); + viewBinding.homeLoginHideIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.show)); + viewBinding.homeLoginPasswordEt.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); + + + } + if (!TextUtils.isEmpty(viewBinding.homeLoginPasswordEt.getText())) { + viewBinding.homeLoginPasswordEt.setSelection(viewBinding.homeLoginPasswordEt.getText().length()); + } + } + }); + //閫夋嫨b绔紝c绔� + viewBinding.homeLoginCheckBCCl.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + v.setSelected(!v.isSelected()); + UserConfigManage.getInstance().setBAccount(v.isSelected()); + viewBinding.homeLoginCheckBCIv.setSelected(UserConfigManage.getInstance().isBAccount()); + if (UserConfigManage.getInstance().isBAccount()) { + viewBinding.homeLoginRegisterTv.setVisibility(View.GONE); + } else { + viewBinding.homeLoginRegisterTv.setVisibility(View.VISIBLE); + } + } + }); + //闅愮鍗忚 + viewBinding.homeLoginPrivacyCheckIv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + v.setSelected(!v.isSelected()); + UserConfigManage.getInstance().setAcceiptPolicy(v.isSelected()); + } + }); + //鐧诲綍 + viewBinding.homeLoginTv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + String account = viewBinding.homeLoginAccountEt.getText().toString().replace(" ", ""); + String password = viewBinding.homeLoginPasswordEt.getText().toString().replace(" ", ""); + boolean is_login = isLocalCheckAccountAndPassword(account, password); + if (!is_login) { + return; + } + boolean isSelected = UserConfigManage.getInstance().isAcceiptPolicy(); + if (!isSelected) { + //闅愮鍗忚鎻愮ず + getDialog(); + return; + } + showLoading(getString(R.string.home_login_be_logging_in)); + HdlAccountLogic.getInstance().regionByAccount(account, new CloudCallBeak<HDLUserRegionBean>() { + @Override + public void onSuccess(HDLUserRegionBean obj) { + //寮�鍙戠幆澧� +// String APP_REGIONURL_TEST = "http://47.114.131.143:27199"; +// AppConfigManage.setUserRegionUrl(APP_REGIONURL_TEST); + //鍒濆鍖栨湇鍔″煙鍚� + AppConfigManage.setUserRegionUrl(obj.getRegionUrl()); + HDLLinkPMUser.getInstance().setUserRegionUrl(AppConfigManage.getUserRegionUrl()); + HdlAccountLogic.getInstance().loginByPassword(account, password, new ILoginCallBack() { + @Override + public void onSuccess(HDLLoginBean obj) { + if (UserConfigManage.getInstance().isBAccount()) { + restoreButtonStyleToInitializeState(); + //瀹夎鍟嗚烦杞晫闈� + startActivity(BPowerStationActivity.class); + hideLoading(); + finish(); + } else { + //C绔渶瑕佸厛鑾峰彇鐢电珯鍒楄〃; + HdlResidenceLogic.getInstance().getResidenceIdList("", "", new CloudCallBeak<List<HouseIdBean>>() { + @Override + public void onSuccess(List<HouseIdBean> obj) { + hideLoading(); + HdlResidenceLogic.getInstance().setHouseIdList(obj); + restoreButtonStyleToInitializeState(); + if (UserConfigManage.getInstance().isBAccount()) { + //瀹夎鍟嗚烦杞晫闈� + startActivity(BPowerStationActivity.class); + } else { + //C绔敤鎴疯烦杞晫闈� + startActivity(CPowerStationActivity.class); + + } + finish(); + } + + @Override + public void onFailure(HDLException e) { + hideLoading(); + restoreButtonStyleToInitializeState(); + if (UserConfigManage.getInstance().isBAccount()) { + //瀹夎鍟嗚烦杞晫闈� + startActivity(BPowerStationActivity.class); + } else { + //C绔敤鎴疯烦杞晫闈� + startActivity(CPowerStationActivity.class); + } + finish(); + } + }); + } + } + + @Override + public void onFailure(HDLException e) { + hideLoading(); + if (e.getCode() == 10019) { + //鐢ㄦ埛宸茬粡琚攣瀹氶敊璇爜 + try { + if (e.getmExtra() != null) { + if (System.currentTimeMillis() < e.getmExtra().getUnlockTime()) { + long time = e.getmExtra().getUnlockTime() - System.currentTimeMillis(); + int minute = Integer.parseInt(TimeUtils.getMinuteTime(time)); + HdlThreadLogic.toast(_mActivity, e.getMsg() + getString(R.string.residue) + minute + getString(R.string.minute) + "(" + e.getCode() + ")"); + } + } + } catch (Exception ee) { + HdlThreadLogic.toast(_mActivity, e.getMsg() + "(" + e.getCode() + ")"); + } + + } else { + HdlThreadLogic.toast(_mActivity, e.getMsg() + "(" + e.getCode() + ")"); + } + } + }); + } + + @Override + public void onFailure(HDLException e) { + hideLoading(); + HdlThreadLogic.toast(_mActivity, e.getMsg() + "(" + e.getCode() + ")"); + } + }); + + + } + }); + //浣撻獙鐢电珯 + viewBinding.homeLoginExperienceTv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + v.setSelected(!v.isSelected()); + UserConfigManage.getInstance().setUserExperience(v.isSelected()); +// requestPermissions(); +// startActivity(BPowerStationActivity.class); + } + }); + //娉ㄥ唽 + viewBinding.homeLoginRegisterTv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(); + intent.setClass(LoginActivity.this, RegisterAccountActivity.class); + startActivity(intent); + } + }); + //蹇樿瀵嗙爜 + viewBinding.homeLoginForgetPasswordTv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(); + intent.setClass(LoginActivity.this, ChangePassword.class); + startActivity(intent); + } + }); + + } + + /** + * 鏍¢獙鐧诲綍鎸夐挳鏄惁鍚敤 + */ + private void isLoginTextViewEnabled() { + String account = viewBinding.homeLoginAccountEt.getText().toString().replace(" ", ""); + String password = viewBinding.homeLoginPasswordEt.getText().toString().replace(" ", ""); + boolean isEnabled = account.length() > 0 && password.length() > 0; + viewBinding.homeLoginTv.setEnabled(isEnabled); + if (password.length() < 6 || password.length() > 16) { + return; + } + //绗﹀悎瀵嗙爜瑙勫垯鍚庨殣钘忛敊璇彁绀猴紱 + viewBinding.homeLoginLine2V.setBackgroundColor(getColor(R.color.text_E1E1E1)); + viewBinding.homeLoginPasswordTextErrorTv.setText(""); + + } + + /** + * 鏈湴鏍¢獙杈撳叆璐﹀彿鎴栬�呭瘑鐮佹槸鍚︽纭� + * + * @param account 璐﹀彿 + * @param password 瀵嗙爜 + * 姝g‘杩斿洖<true>true</true> + * 涓�鑸柟娉� + */ + private boolean isLocalCheckAccountAndPassword(String account, String password) { + if (TextUtils.isEmpty(account)) { + viewBinding.homeLoginLine1V.setBackgroundColor(getColor(R.color.text_D34545)); + viewBinding.homeLoginAccountTextErrorTv.setText(R.string.home_login_error_account_null); + return false; + } + if (TextUtils.isEmpty(password)) { + viewBinding.homeLoginLine2V.setBackgroundColor(getColor(R.color.text_D34545)); + viewBinding.homeLoginPasswordTextErrorTv.setText(R.string.home_login_error_password_null); + return false; + } + + + 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_str); + return false; + } + return true; + + } + + /** + * 鎭㈠缁勪欢鏍峰紡鍒板垵濮嬪寲鐘舵�� + */ + private void restoreButtonStyleToInitializeState() { + HdlThreadLogic.runMainThread(new Runnable() { + @Override + public void run() { + viewBinding.homeLoginLine1V.setBackgroundColor(getColor(R.color.text_E1E1E1)); + viewBinding.homeLoginAccountTextErrorTv.setText(""); + viewBinding.homeLoginLine2V.setBackgroundColor(getColor(R.color.text_E1E1E1)); + viewBinding.homeLoginPasswordTextErrorTv.setText(""); + } + }, null, null); + } + + /** + * 璁剧疆涓�涓插瓧绗﹀绉嶉鑹蹭互鍙婄偣鍑讳簨浠� + * + * @param textView 褰撳墠缁勪欢 + */ + private void setStringDifferentColors(TextView textView) { + + if (textView == null) { + return; + } + + String s = textView.getText().toString(); + if (!s.contains("銆�")) { + return; + } + int startIndex1 = s.indexOf("銆�"); + int endIndex1 = s.indexOf("銆�") + 1; + + int startIndex2 = s.lastIndexOf("銆�"); + int endIndex2 = s.lastIndexOf("銆�") + 1; + + SpannableStringBuilder spannable = new SpannableStringBuilder(s); + //璁剧疆鏂囧瓧鐨勫墠鏅壊 + if (textView.getTag() != null && textView.getTag().toString().equals("click")) { + spannable.setSpan(new ClickableSpan() { + @Override + public void onClick(@NonNull View widget) { + //todo 闇�瑕佽烦杞埌鏈嶅姟鍗忚鐣岄潰 + Intent intent = new Intent(); + intent.putExtra("type", WebActivity.ServiceAgreement); + intent.setClass(_mActivity, WebActivity.class); + startActivity(intent); + } + + @Override + public void updateDrawState(@NonNull TextPaint ds) { + super.updateDrawState(ds); + //璁剧疆瀛椾綋棰滆壊 + ds.setColor(getResources().getColor(R.color.text_245EC3, null)); + // 鍘绘帀涓嬪垝绾� + ds.setUnderlineText(false); + } + + + }, startIndex1, endIndex1, 0); + + spannable.setSpan(new ClickableSpan() { + @Override + public void onClick(@NonNull View widget) { + //todo 闇�瑕佽烦杞埌闅愮鐣岄潰 + Intent intent = new Intent(); + intent.putExtra("type", WebActivity.PrivacyAgreement); + intent.setClass(_mActivity, WebActivity.class); + startActivity(intent); + } + + @Override + public void updateDrawState(@NonNull TextPaint ds) { + super.updateDrawState(ds); + //璁剧疆瀛椾綋棰滆壊 + ds.setColor(getResources().getColor(R.color.text_245EC3, null)); + // 鍘绘帀涓嬪垝绾� + ds.setUnderlineText(false); + } + + + }, startIndex2, endIndex2, 0); + + + } + textView.setText(spannable); + //涓�旈亣鍒扮偣鍑诲悗瀛椾綋鏄剧ず楂樹寒锛屽彇娑堥珮浜� + textView.setHighlightColor(getResources().getColor(R.color.text_00000000, null)); + //鏈�鍚庤缃彲鐐瑰嚮锛屽繀椤诲疄鐜帮紝鍚﹀垯鍙兘鏄剧ず鏍峰紡锛屾棤娉曞疄鐜扮偣鍑绘晥鏋� + textView.setMovementMethod(LinkMovementMethod.getInstance()); + + } + + + /** + * 寮圭獥 + */ + private void getDialog() { + ConfirmationCancelDialog1 dialog = new ConfirmationCancelDialog1(_mActivity); + dialog.show(); +// dialog.setTitle(getString(R.string.loading_privacy)); + dialog.isHideTitle(true); + dialog.setContent(getString(R.string.loading_privacy_server)); + setStringDifferentColors(dialog.getContentTextView()); + dialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() { + @Override + public void Confirm() { + + UserConfigManage.getInstance().setAcceiptPolicy(true); + viewBinding.homeLoginPrivacyCheckIv.setSelected(true); + dialog.dismiss(); + } + }); + dialog.setNoOnclickListener(new ConfirmationCancelDialog.onNoOnclickListener() { + @Override + public void Cancel() { + UserConfigManage.getInstance().setAcceiptPolicy(false); + viewBinding.homeLoginPrivacyCheckIv.setSelected(false); + dialog.dismiss(); + } + }); + + } + + /** + * 杈撳叆璐﹀彿 + */ + private final TextWatcher accountTextWatcher = 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) { + } + + @Override + public void afterTextChanged(Editable s) { + if (s.length() > 0) { + if (viewBinding.homeLoginClearContentsIv.getVisibility() == View.GONE) { + viewBinding.homeLoginClearContentsIv.setVisibility(View.VISIBLE); + } + } else { + if (viewBinding.homeLoginClearContentsIv.getVisibility() == View.VISIBLE) { + viewBinding.homeLoginClearContentsIv.setVisibility(View.GONE); + } + } + isLoginTextViewEnabled(); + } + }; + /** + * 杈撳叆瀵嗙爜 + */ + private final TextWatcher passwordTextWatcher = 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) { + } + + @Override + public void afterTextChanged(Editable s) { + isLoginTextViewEnabled(); + } + }; + + @Override + protected void onDestroy() { + super.onDestroy(); + viewBinding.homeLoginAccountEt.removeTextChangedListener(accountTextWatcher); + viewBinding.homeLoginPasswordEt.removeTextChangedListener(passwordTextWatcher); + } + + +} \ No newline at end of file -- Gitblit v1.8.0