package com.hdl.photovoltaic.ui; import android.os.Bundle; import android.text.Editable; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.TextUtils; import android.text.TextWatcher; import android.text.method.HideReturnsTransformationMethod; import android.text.method.PasswordTransformationMethod; import android.text.style.ForegroundColorSpan; import android.util.Log; import android.view.View; import android.widget.TextView; import androidx.appcompat.content.res.AppCompatResources; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.CustomBaseActivity; import com.hdl.photovoltaic.other.HdlResidenceLogic; import com.hdl.photovoltaic.ui.bean.LoginBean; 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; public class HomeLoginActivity extends CustomBaseActivity { private ActivityHomeLoginBinding viewBinding; @Override public Object getContentView() { viewBinding = ActivityHomeLoginBinding.inflate(getLayoutInflater()); return viewBinding.getRoot(); } @Override public void onBindView(Bundle savedInstanceState) { //初始化 initView(); //初始化界面监听器 initEvent(); } private void initView() { setStringDifferentColors(viewBinding.homeLoginPrivacyTv); //测试用 viewBinding.homeLoginAccountEt.setText("18402017839"); viewBinding.homeLoginPasswordEt.setText("123456"); isLoginTextViewEnabled(); } private void initEvent() { viewBinding.homeLoginAccountEt.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) { Log.d("HomeLoginActivity2", String.format("CharSequence=%s,start=%s,before=%s,count=%s", s, start, before, 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(); } }); viewBinding.homeLoginClearContentsIv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { viewBinding.homeLoginAccountEt.setText(""); } }); viewBinding.homeLoginPasswordEt.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) { } @Override public void afterTextChanged(Editable s) { isLoginTextViewEnabled(); } }); 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()); } } }); viewBinding.homeLoginCheckIv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { v.setSelected(!v.isSelected()); } }); viewBinding.homeLoginPrivacyCheckIv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { v.setSelected(!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 isLogin = isLocalCheckAccountAndPassword(account, password); if (!isLogin) { return; } // boolean isSelected = viewBinding.homeLoginPrivacyCheckIv.isSelected(); // if(!isSelected){ // //隐私协议提示 // return; // } showLoading(getString(R.string.home_login_登录中)); HdlAccountLogic.getInstance().regionByAccount(account, new CloudCallBeak() { @Override public void onSuccess(LoginUserRegionBean obj) { AppConfigManage.setUserRegionUrl(obj.getRegionUrl()); HdlAccountLogic.getInstance().loginByPassword(account, password, new CloudCallBeak() { @Override public void onSuccess(LoginBean obj) { HdlThreadLogic.runMainThread(new Runnable() { @Override public void run() { HdlResidenceLogic.getInstance().getResidenceList(1, 100, new CloudCallBeak() { @Override public void onSuccess(Boolean obj) { } @Override public void onFailure(Exception exception) { } }); hideLoading(); restoreButtonStyleToInitializeState(); startActivity(MyPowerStationActivity.class); } }, null, null); } @Override public void onFailure(Exception exception) { hideLoading(); } }); } @Override public void onFailure(Exception exception) { hideLoading(); } }); } }); //体验电站 viewBinding.homeLoginExperienceTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(MyPowerStationActivity.class); } }); } /** * 校验登录按钮是否启用 */ 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); } /** * 本地校验输入账号或者密码是否正确 * * @param account 账号 * @param password 密码 * 正确返回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_账号不能为空); return false; } if (TextUtils.isEmpty(password)) { viewBinding.homeLoginLine2V.setBackgroundColor(getColor(R.color.text_D34545)); viewBinding.homeLoginPasswordTextErrorTv.setText(R.string.home_login_error_密码不能为空); 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个字符); return false; } return true; } /** * 恢复组件样式到初始化状态 */ private void restoreButtonStyleToInitializeState() { viewBinding.homeLoginLine1V.setBackgroundColor(getColor(R.color.text_E1E1E1)); viewBinding.homeLoginAccountTextErrorTv.setText(""); viewBinding.homeLoginLine2V.setBackgroundColor(getColor(R.color.text_E1E1E1)); viewBinding.homeLoginPasswordTextErrorTv.setText(""); } /** * 设置一串字符多种颜色 * * @param view 当前组件 */ private void setStringDifferentColors(TextView view) { String s = view.getText().toString(); SpannableStringBuilder spannable = new SpannableStringBuilder(s); //设置文字的前景色 spannable.setSpan(new ForegroundColorSpan(getColor(R.color.text_245EC3)), 2, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); spannable.setSpan(new ForegroundColorSpan(getColor(R.color.text_245EC3)), 9, 19, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); view.setText(spannable); } }