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);
|
// }
|
//
|
// });
|
|
|
}
|
|
/**
|
* 初始化UI
|
*/
|
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 = "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) {
|
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 密码
|
* 正确返回<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.setTitle(getString(R.string.loading_privacy));
|
dialog.setContent(getString(R.string.loading_privacy_server));
|
dialog.show();
|
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);
|
}
|
|
|
|
|
}
|