SendKeyBoardFragment.java 51 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017
  1. package com.emato.ich.fragment;
  2. import android.os.Bundle;
  3. import android.os.CountDownTimer;
  4. import android.text.Editable;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.TextView;
  9. import androidx.annotation.NonNull;
  10. import androidx.annotation.Nullable;
  11. import androidx.drawerlayout.widget.DrawerLayout;
  12. import androidx.fragment.app.Fragment;
  13. import com.emato.ich.MainActivity;
  14. import com.emato.ich.R;
  15. import com.emato.ich.api.ICSPClient;
  16. import com.emato.ich.contant.ICSPConstant;
  17. import com.emato.ich.contant.SystemConfigConstant;
  18. import com.emato.ich.databinding.FragmentMyKeyBoardBinding;
  19. import com.emato.ich.databinding.FragmentSendKeyBoardBinding;
  20. import com.emato.ich.entity.vo.ResponseData;
  21. import com.emato.ich.entity.vo.ResponseTokenVo;
  22. import com.emato.ich.local.LocalStorage;
  23. import com.emato.ich.utils.BaseUtils;
  24. import com.emato.ich.utils.ButtonUtils;
  25. import com.emato.ich.utils.JacksonUtils;
  26. import com.emato.ich.utils.Log;
  27. import com.emato.ich.utils.LoggingUtils;
  28. import com.emato.ich.utils.NavUtils;
  29. import com.emato.ich.utils.StringUtils;
  30. import com.emato.ich.utils.TimeOutUtils;
  31. import com.emato.ich.utils.ToastUtils;
  32. import com.fasterxml.jackson.core.JsonProcessingException;
  33. import com.fasterxml.jackson.core.type.TypeReference;
  34. import org.jetbrains.annotations.NotNull;
  35. import java.io.IOException;
  36. import java.util.concurrent.atomic.AtomicBoolean;
  37. import java.util.regex.Pattern;
  38. import okhttp3.Call;
  39. import okhttp3.Callback;
  40. import okhttp3.Response;
  41. /**
  42. * 投递员登录页面
  43. */
  44. public class SendKeyBoardFragment extends Fragment {
  45. private static final String TAG = SendKeyBoardFragment.class.getName();
  46. private FragmentSendKeyBoardBinding binding;
  47. private CountDownTimer timer;
  48. private long start;
  49. @Nullable
  50. @org.jetbrains.annotations.Nullable
  51. @Override
  52. public View onCreateView(@NonNull @NotNull LayoutInflater inflater, @Nullable @org.jetbrains.annotations.Nullable ViewGroup container, @Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
  53. start = System.currentTimeMillis();
  54. binding = FragmentSendKeyBoardBinding.inflate(inflater, container, false);
  55. return binding.getRoot();
  56. }
  57. public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
  58. long end = System.currentTimeMillis();
  59. Log.i(TAG, TAG + "页面渲染速度为" + (end - start) + "ms。");
  60. super.onViewCreated(view, savedInstanceState);
  61. BaseUtils.disableEditText(binding.editTextTextPersonName4);
  62. BaseUtils.disableEditText(binding.editTextTextPersonName5);
  63. try {
  64. MainActivity activity = (MainActivity) getActivity();
  65. timer = TimeOutUtils.timeout(activity, SendKeyBoardFragment.this, binding.timeout, 60);
  66. timer.start();
  67. } catch (Exception e) {
  68. Log.e(TAG, "onViewCreated: 倒计时异常! ", e);
  69. LoggingUtils.sendErrorLog("业务异常: 投递员登录页面倒计时异常! ", e);
  70. }
  71. // 如果有配置账号密码, 账号定死
  72. String loginPhone = null;
  73. String loginType = null; // store 门店 courier 快递员投递 collect 快递员揽件
  74. try {
  75. MainActivity activity = (MainActivity) getActivity();
  76. loginPhone = activity.getConfigMap().get(SystemConfigConstant.cabinet_login_phone);
  77. loginType = activity.getBundleMap().get(CourierFragment.class.getName()).getString("loginType");
  78. if("store".equals(loginType)){
  79. // 如果不是门店店员进来 则将注册二维码设置为隐藏
  80. view.findViewById(R.id.qrCodeImage).setVisibility(View.GONE);
  81. }
  82. } catch (Exception e) {
  83. Log.e(TAG, "onViewCreated: 配置登录手机号出错! ", e);
  84. LoggingUtils.sendErrorLog("业务异常: 配置登录手机号出错! ", e);
  85. }
  86. if (!StringUtils.isNullOrEmpty(loginPhone) && "store".equals(loginType)) {
  87. String loginPhoneShow = toHidePhone(loginPhone);
  88. binding.editTextTextPersonName4.setText(loginPhoneShow);
  89. binding.editTextTextPersonName4.setEnabled(false);
  90. } else {
  91. // 4 手机
  92. binding.editTextTextPersonName4.setOnFocusChangeListener((view1, hasFocus) -> {
  93. if (hasFocus) {
  94. binding.keyBoard.inputButton0.setOnClickListener(v -> {
  95. int length = binding.editTextTextPersonName4.getText().length();
  96. if (length >= 11) {
  97. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  98. return;
  99. }
  100. int start = binding.editTextTextPersonName4.getSelectionStart();
  101. binding.editTextTextPersonName4.getText().insert(start, "0");
  102. });
  103. binding.keyBoard.inputButton1.setOnClickListener(v -> {
  104. int length = binding.editTextTextPersonName4.getText().length();
  105. if (length >= 11) {
  106. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  107. return;
  108. }
  109. int start = binding.editTextTextPersonName4.getSelectionStart();
  110. binding.editTextTextPersonName4.getText().insert(start, "1");
  111. });
  112. binding.keyBoard.inputButton2.setOnClickListener(v -> {
  113. int length = binding.editTextTextPersonName4.getText().length();
  114. if (length >= 11) {
  115. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  116. return;
  117. }
  118. int start = binding.editTextTextPersonName4.getSelectionStart();
  119. binding.editTextTextPersonName4.getText().insert(start, "2");
  120. });
  121. binding.keyBoard.inputButton3.setOnClickListener(v -> {
  122. int length = binding.editTextTextPersonName4.getText().length();
  123. if (length >= 11) {
  124. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  125. return;
  126. }
  127. int start = binding.editTextTextPersonName4.getSelectionStart();
  128. binding.editTextTextPersonName4.getText().insert(start, "3");
  129. });
  130. binding.keyBoard.inputButton4.setOnClickListener(v -> {
  131. int length = binding.editTextTextPersonName4.getText().length();
  132. if (length >= 11) {
  133. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  134. return;
  135. }
  136. int start = binding.editTextTextPersonName4.getSelectionStart();
  137. binding.editTextTextPersonName4.getText().insert(start, "4");
  138. });
  139. binding.keyBoard.inputButton5.setOnClickListener(v -> {
  140. int length = binding.editTextTextPersonName4.getText().length();
  141. if (length >= 11) {
  142. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  143. return;
  144. }
  145. int start = binding.editTextTextPersonName4.getSelectionStart();
  146. binding.editTextTextPersonName4.getText().insert(start, "5");
  147. });
  148. binding.keyBoard.inputButton6.setOnClickListener(v -> {
  149. int length = binding.editTextTextPersonName4.getText().length();
  150. if (length >= 11) {
  151. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  152. return;
  153. }
  154. int start = binding.editTextTextPersonName4.getSelectionStart();
  155. binding.editTextTextPersonName4.getText().insert(start, "6");
  156. });
  157. binding.keyBoard.inputButton7.setOnClickListener(v -> {
  158. int length = binding.editTextTextPersonName4.getText().length();
  159. if (length >= 11) {
  160. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  161. return;
  162. }
  163. int start = binding.editTextTextPersonName4.getSelectionStart();
  164. binding.editTextTextPersonName4.getText().insert(start, "7");
  165. });
  166. binding.keyBoard.inputButton8.setOnClickListener(v -> {
  167. int length = binding.editTextTextPersonName4.getText().length();
  168. if (length >= 11) {
  169. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  170. return;
  171. }
  172. int start = binding.editTextTextPersonName4.getSelectionStart();
  173. binding.editTextTextPersonName4.getText().insert(start, "8");
  174. });
  175. binding.keyBoard.inputButton9.setOnClickListener(v -> {
  176. int length = binding.editTextTextPersonName4.getText().length();
  177. if (length >= 11) {
  178. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  179. return;
  180. }
  181. int start = binding.editTextTextPersonName4.getSelectionStart();
  182. binding.editTextTextPersonName4.getText().insert(start, "9");
  183. });
  184. binding.keyBoard.inputButtonCancel.setOnClickListener(v -> {
  185. Editable text = binding.editTextTextPersonName4.getText();
  186. int start = binding.editTextTextPersonName4.getSelectionStart();
  187. if (text.length() > 0) {
  188. if (start > 0) {
  189. text.delete(start - 1, start);
  190. }
  191. binding.editTextTextPersonName4.setText(text, TextView.BufferType.EDITABLE);
  192. binding.editTextTextPersonName4.setSelection(start - 1 < 0 ? text.length() : start - 1);
  193. }
  194. });
  195. // 长按删除
  196. binding.keyBoard.inputButtonCancel.setOnLongClickListener(v -> {
  197. binding.editTextTextPersonName4.getText().clear();
  198. return false;
  199. });
  200. }
  201. });
  202. }
  203. String finalLoginPhone = loginPhone;
  204. String finalLoginType = loginType;
  205. binding.keyBoard.inputButtonConfirm.setOnClickListener(view1 -> {
  206. if (ButtonUtils.isFastClick()) {
  207. return;
  208. }
  209. // 登录逻辑 editTextTextPersonName4 手机 editTextTextPersonName5 密码
  210. String sendPhone = "";
  211. if ("courier".equals(finalLoginType) || "collect".equals(finalLoginType)){
  212. sendPhone = binding.editTextTextPersonName4.getText().toString();
  213. }else {
  214. sendPhone = !StringUtils.isNullOrEmpty(finalLoginPhone) ? finalLoginPhone : binding.editTextTextPersonName4.getText().toString();
  215. }
  216. String password = binding.editTextTextPersonName5.getText().toString();
  217. Pattern phonePattern = Pattern.compile("^((13[0-9])|(14[0,1,4-9])|(15[0-3,5-9])|(16[2,5,6,7])|(17[0-8])|(18[0-9])|(19[0-3,5-9]))\\d{8}$");
  218. Pattern pwdPattern = Pattern.compile("^[0-9]{8,16}$");
  219. if (phonePattern.matcher(sendPhone).matches() && pwdPattern.matcher(password).matches()) {
  220. String finalSendPhone = sendPhone;
  221. ICSPClient.login(sendPhone, password, new Callback() {
  222. @Override
  223. public void onFailure(@NotNull Call call, @NotNull IOException e) {
  224. // TODO 登录失败处理
  225. ToastUtils.make(getContext(), "登录失败!网络异常!");
  226. Log.e(TAG, "onFailure: 登录失败! call: " + call.timeout().toString(), e);
  227. LoggingUtils.sendErrorLog("业务异常: 登录失败!网络异常! ", e);
  228. }
  229. @Override
  230. public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
  231. ((MainActivity) getActivity()).runOnUiThread(() -> {
  232. String responseStr = ICSPClient.isSuccessfulAndParseResponse(response);
  233. if (!StringUtils.isNullOrEmpty(responseStr)) {
  234. try {
  235. ResponseData<ResponseTokenVo> responseData = JacksonUtils.objectmapper.readValue(responseStr, new TypeReference<ResponseData<ResponseTokenVo>>() {
  236. });
  237. ResponseTokenVo data = responseData.getData();
  238. if (responseData.getCode().equals(ICSPConstant.OK)) {
  239. LocalStorage.Session session = new LocalStorage.Session();
  240. session.setPhone(finalSendPhone);
  241. session.setTime(System.currentTimeMillis());
  242. session.setToken(data.getToken());
  243. MainActivity activity = (MainActivity) getActivity();
  244. String pageType = activity.getBundleMap().get(MainFragment.class.getName()).getString("pageType");
  245. String loginType = activity.getBundleMap().get(CourierFragment.class.getName()).getString("loginType");
  246. LocalStorage.getInstance().cleanSession(activity,false);
  247. LocalStorage.getInstance().setSession(session);
  248. Bundle pageTypeBundle = new Bundle();
  249. pageTypeBundle.putString("pageType",pageType);
  250. activity.getBundleMap().put(MainFragment.class.getName(), pageTypeBundle);
  251. Bundle loginTypeBundle = new Bundle();
  252. loginTypeBundle.putString("loginType",loginType);
  253. activity.getBundleMap().put(CourierFragment.class.getName(), loginTypeBundle);
  254. // 登录成功
  255. ToastUtils.make(getContext(), "登录成功!");
  256. if (null != timer) {
  257. timer.cancel();
  258. }
  259. if ("store".equals(finalLoginType) || "courier".equals(finalLoginType)){
  260. Bundle isPayBundle = new Bundle();
  261. isPayBundle.putString("isPay",data.getIsPay());
  262. activity.getBundleMap().put(SendKeyBoardFragment.class.getName(), isPayBundle);
  263. if("store".equals(finalLoginType) ){
  264. if("10".equals(data.getDelType())){
  265. NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_sendMainFragment);
  266. } else {
  267. ToastUtils.make(getContext(), "请用门店账号登录!");
  268. return;
  269. }
  270. }else {
  271. if("20".equals(data.getDelType())){
  272. NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_sendMainFragment);
  273. } else {
  274. ToastUtils.make(getContext(), "请用快递员账号登录!");
  275. return;
  276. }
  277. }
  278. // if ("0".equals(data.getIsPay())){
  279. // NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_paymentFragment);
  280. // }else {
  281. // NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_sendMainFragment);
  282. // }
  283. }else{
  284. if(!"20".equals(data.getDelType())){
  285. ToastUtils.make(getContext(), "请用快递员账号登录!");
  286. return;
  287. }
  288. NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_collectMaterialsFragment);
  289. }
  290. } else {
  291. ToastUtils.make(getContext(), responseData.getMsg());
  292. Log.w(TAG, "onResponse: " + responseData.getMsg());
  293. }
  294. } catch (JsonProcessingException e) {
  295. Log.e(TAG, "onViewCreated: 解析登录响应信息错误! response body: " + responseStr, e);
  296. ToastUtils.make(getContext(), "登录失败!");
  297. LoggingUtils.sendErrorLog("业务异常: 登录失败!", e);
  298. } catch (ClassCastException e) {
  299. Log.e(TAG, "onResponse: 解析登录响应信息类型转换错误! response body: " + responseStr, e);
  300. ToastUtils.make(getContext(), "登录失败!");
  301. LoggingUtils.sendErrorLog("业务异常: 登录失败!", e);
  302. } catch (RuntimeException e) {
  303. Log.e(TAG, "onResponse: 登录失败! ", e);
  304. ToastUtils.make(getContext(), "登录失败!");
  305. LoggingUtils.sendErrorLog("业务异常: 登录失败!未知错误! ", e);
  306. }
  307. } else {
  308. // 登录失败
  309. ToastUtils.make(getContext(), "服务异常!请稍后重试!");
  310. }
  311. });
  312. }
  313. });
  314. } else if (!phonePattern.matcher(sendPhone).matches()) {
  315. ToastUtils.make(getContext(), "输入正确的手机号!");
  316. } else if (!pwdPattern.matcher(password).matches()) {
  317. ToastUtils.make(getContext(), "密码格式错误!请输入8-16位的数字!");
  318. }
  319. });
  320. // 密码
  321. binding.editTextTextPersonName5.setOnFocusChangeListener((view1, hasFocus) -> {
  322. AtomicBoolean caseSmallFlag = new AtomicBoolean(true);
  323. binding.keyBoard.inputButton0.setOnClickListener(v -> {
  324. if(!hasFocus){
  325. return;
  326. }
  327. int length = binding.editTextTextPersonName5.getText().length();
  328. if (length >= 16) {
  329. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  330. return;
  331. }
  332. int start = binding.editTextTextPersonName5.getSelectionStart();
  333. binding.editTextTextPersonName5.getText().insert(start, "0");
  334. });
  335. binding.keyBoard.inputButton1.setOnClickListener(v -> {
  336. if(!hasFocus){
  337. return;
  338. }
  339. int length = binding.editTextTextPersonName5.getText().length();
  340. if (length >= 16) {
  341. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  342. return;
  343. }
  344. int start = binding.editTextTextPersonName5.getSelectionStart();
  345. binding.editTextTextPersonName5.getText().insert(start, "1");
  346. });
  347. binding.keyBoard.inputButton2.setOnClickListener(v -> {
  348. if(!hasFocus){
  349. return;
  350. }
  351. int length = binding.editTextTextPersonName5.getText().length();
  352. if (length >= 16) {
  353. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  354. return;
  355. }
  356. int start = binding.editTextTextPersonName5.getSelectionStart();
  357. binding.editTextTextPersonName5.getText().insert(start, "2");
  358. });
  359. binding.keyBoard.inputButton3.setOnClickListener(v -> {
  360. if(!hasFocus){
  361. return;
  362. }
  363. int length = binding.editTextTextPersonName5.getText().length();
  364. if (length >= 16) {
  365. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  366. return;
  367. }
  368. int start = binding.editTextTextPersonName5.getSelectionStart();
  369. binding.editTextTextPersonName5.getText().insert(start, "3");
  370. });
  371. binding.keyBoard.inputButton4.setOnClickListener(v -> {
  372. if(!hasFocus){
  373. return;
  374. }
  375. int length = binding.editTextTextPersonName5.getText().length();
  376. if (length >= 16) {
  377. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  378. return;
  379. }
  380. int start = binding.editTextTextPersonName5.getSelectionStart();
  381. binding.editTextTextPersonName5.getText().insert(start, "4");
  382. });
  383. binding.keyBoard.inputButton5.setOnClickListener(v -> {
  384. if(!hasFocus){
  385. return;
  386. }
  387. int length = binding.editTextTextPersonName5.getText().length();
  388. if (length >= 16) {
  389. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  390. return;
  391. }
  392. int start = binding.editTextTextPersonName5.getSelectionStart();
  393. binding.editTextTextPersonName5.getText().insert(start, "5");
  394. });
  395. binding.keyBoard.inputButton6.setOnClickListener(v -> {
  396. if(!hasFocus){
  397. return;
  398. }
  399. int length = binding.editTextTextPersonName5.getText().length();
  400. if (length >= 16) {
  401. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  402. return;
  403. }
  404. int start = binding.editTextTextPersonName5.getSelectionStart();
  405. binding.editTextTextPersonName5.getText().insert(start, "6");
  406. });
  407. binding.keyBoard.inputButton7.setOnClickListener(v -> {
  408. if(!hasFocus){
  409. return;
  410. }
  411. int length = binding.editTextTextPersonName5.getText().length();
  412. if (length >= 16) {
  413. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  414. return;
  415. }
  416. int start = binding.editTextTextPersonName5.getSelectionStart();
  417. binding.editTextTextPersonName5.getText().insert(start, "7");
  418. });
  419. binding.keyBoard.inputButton8.setOnClickListener(v -> {
  420. if(!hasFocus){
  421. return;
  422. }
  423. int length = binding.editTextTextPersonName5.getText().length();
  424. if (length >= 16) {
  425. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  426. return;
  427. }
  428. int start = binding.editTextTextPersonName5.getSelectionStart();
  429. binding.editTextTextPersonName5.getText().insert(start, "8");
  430. });
  431. binding.keyBoard.inputButton9.setOnClickListener(v -> {
  432. if(!hasFocus){
  433. return;
  434. }
  435. int length = binding.editTextTextPersonName5.getText().length();
  436. if (length >= 16) {
  437. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  438. return;
  439. }
  440. int start = binding.editTextTextPersonName5.getSelectionStart();
  441. binding.editTextTextPersonName5.getText().insert(start, "9");
  442. });
  443. // todo:绑定字母按键
  444. binding.keyBoard.inputButtonQ.setOnClickListener(v -> {
  445. if(!hasFocus){
  446. return;
  447. }
  448. int length = binding.editTextTextPersonName5.getText().length();
  449. if (length >= 16) {
  450. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  451. return;
  452. }
  453. int start = binding.editTextTextPersonName5.getSelectionStart();
  454. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "Q" : "q");
  455. });
  456. binding.keyBoard.inputButtonW.setOnClickListener(v -> {
  457. if(!hasFocus){
  458. return;
  459. }
  460. int length = binding.editTextTextPersonName5.getText().length();
  461. if (length >= 16) {
  462. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  463. return;
  464. }
  465. int start = binding.editTextTextPersonName5.getSelectionStart();
  466. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "W" : "w");
  467. });
  468. binding.keyBoard.inputButtonE.setOnClickListener(v -> {
  469. if(!hasFocus){
  470. return;
  471. }
  472. int length = binding.editTextTextPersonName5.getText().length();
  473. if (length >= 16) {
  474. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  475. return;
  476. }
  477. int start = binding.editTextTextPersonName5.getSelectionStart();
  478. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "E" : "e");
  479. });
  480. binding.keyBoard.inputButtonR.setOnClickListener(v -> {
  481. if(!hasFocus){
  482. return;
  483. }
  484. int length = binding.editTextTextPersonName5.getText().length();
  485. if (length >= 16) {
  486. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  487. return;
  488. }
  489. int start = binding.editTextTextPersonName5.getSelectionStart();
  490. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "R" : "r");
  491. });
  492. binding.keyBoard.inputButtonT.setOnClickListener(v -> {
  493. if(!hasFocus){
  494. return;
  495. }
  496. int length = binding.editTextTextPersonName5.getText().length();
  497. if (length >= 16) {
  498. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  499. return;
  500. }
  501. int start = binding.editTextTextPersonName5.getSelectionStart();
  502. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "T" : "t");
  503. });
  504. binding.keyBoard.inputButtonY.setOnClickListener(v -> {
  505. if(!hasFocus){
  506. return;
  507. }
  508. int length = binding.editTextTextPersonName5.getText().length();
  509. if (length >= 16) {
  510. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  511. return;
  512. }
  513. int start = binding.editTextTextPersonName5.getSelectionStart();
  514. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "Y" : "y");
  515. });
  516. binding.keyBoard.inputButtonU.setOnClickListener(v -> {
  517. if(!hasFocus){
  518. return;
  519. }
  520. int length = binding.editTextTextPersonName5.getText().length();
  521. if (length >= 16) {
  522. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  523. return;
  524. }
  525. int start = binding.editTextTextPersonName5.getSelectionStart();
  526. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "U" : "u");
  527. });
  528. binding.keyBoard.inputButtonI.setOnClickListener(v -> {
  529. if(!hasFocus){
  530. return;
  531. }
  532. int length = binding.editTextTextPersonName5.getText().length();
  533. if (length >= 16) {
  534. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  535. return;
  536. }
  537. int start = binding.editTextTextPersonName5.getSelectionStart();
  538. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "I" : "i");
  539. });
  540. binding.keyBoard.inputButtonO.setOnClickListener(v -> {
  541. if(!hasFocus){
  542. return;
  543. }
  544. int length = binding.editTextTextPersonName5.getText().length();
  545. if (length >= 16) {
  546. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  547. return;
  548. }
  549. int start = binding.editTextTextPersonName5.getSelectionStart();
  550. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "O" : "o");
  551. });
  552. binding.keyBoard.inputButtonP.setOnClickListener(v -> {
  553. if(!hasFocus){
  554. return;
  555. }
  556. int length = binding.editTextTextPersonName5.getText().length();
  557. if (length >= 16) {
  558. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  559. return;
  560. }
  561. int start = binding.editTextTextPersonName5.getSelectionStart();
  562. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "P" : "p");
  563. });
  564. binding.keyBoard.inputButtonA.setOnClickListener(v -> {
  565. if(!hasFocus){
  566. return;
  567. }
  568. int length = binding.editTextTextPersonName5.getText().length();
  569. if (length >= 16) {
  570. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  571. return;
  572. }
  573. int start = binding.editTextTextPersonName5.getSelectionStart();
  574. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "A" : "a");
  575. });
  576. binding.keyBoard.inputButtonS.setOnClickListener(v -> {
  577. if(!hasFocus){
  578. return;
  579. }
  580. int length = binding.editTextTextPersonName5.getText().length();
  581. if (length >= 16) {
  582. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  583. return;
  584. }
  585. int start = binding.editTextTextPersonName5.getSelectionStart();
  586. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "S" : "s");
  587. });
  588. binding.keyBoard.inputButtonD.setOnClickListener(v -> {
  589. if(!hasFocus){
  590. return;
  591. }
  592. int length = binding.editTextTextPersonName5.getText().length();
  593. if (length >= 16) {
  594. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  595. return;
  596. }
  597. int start = binding.editTextTextPersonName5.getSelectionStart();
  598. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "D" : "d");
  599. });
  600. binding.keyBoard.inputButtonF.setOnClickListener(v -> {
  601. if(!hasFocus){
  602. return;
  603. }
  604. int length = binding.editTextTextPersonName5.getText().length();
  605. if (length >= 16) {
  606. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  607. return;
  608. }
  609. int start = binding.editTextTextPersonName5.getSelectionStart();
  610. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "F" : "f");
  611. });
  612. binding.keyBoard.inputButtonG.setOnClickListener(v -> {
  613. if(!hasFocus){
  614. return;
  615. }
  616. int length = binding.editTextTextPersonName5.getText().length();
  617. if (length >= 16) {
  618. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  619. return;
  620. }
  621. int start = binding.editTextTextPersonName5.getSelectionStart();
  622. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "G" : "g");
  623. });
  624. binding.keyBoard.inputButtonH.setOnClickListener(v -> {
  625. if(!hasFocus){
  626. return;
  627. }
  628. int length = binding.editTextTextPersonName5.getText().length();
  629. if (length >= 16) {
  630. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  631. return;
  632. }
  633. int start = binding.editTextTextPersonName5.getSelectionStart();
  634. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "H" : "h");
  635. });
  636. binding.keyBoard.inputButtonJ.setOnClickListener(v -> {
  637. if(!hasFocus){
  638. return;
  639. }
  640. int length = binding.editTextTextPersonName5.getText().length();
  641. if (length >= 16) {
  642. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  643. return;
  644. }
  645. int start = binding.editTextTextPersonName5.getSelectionStart();
  646. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "J" : "j");
  647. });
  648. binding.keyBoard.inputButtonK.setOnClickListener(v -> {
  649. if(!hasFocus){
  650. return;
  651. }
  652. int length = binding.editTextTextPersonName5.getText().length();
  653. if (length >= 16) {
  654. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  655. return;
  656. }
  657. int start = binding.editTextTextPersonName5.getSelectionStart();
  658. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "K" : "k");
  659. });
  660. binding.keyBoard.inputButtonL.setOnClickListener(v -> {
  661. if(!hasFocus){
  662. return;
  663. }
  664. int length = binding.editTextTextPersonName5.getText().length();
  665. if (length >= 16) {
  666. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  667. return;
  668. }
  669. int start = binding.editTextTextPersonName5.getSelectionStart();
  670. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "L" : "l");
  671. });
  672. binding.keyBoard.inputButtonZ.setOnClickListener(v -> {
  673. if(!hasFocus){
  674. return;
  675. }
  676. int length = binding.editTextTextPersonName5.getText().length();
  677. if (length >= 16) {
  678. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  679. return;
  680. }
  681. int start = binding.editTextTextPersonName5.getSelectionStart();
  682. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "Z" : "z");
  683. });
  684. binding.keyBoard.inputButtonX.setOnClickListener(v -> {
  685. if(!hasFocus){
  686. return;
  687. }
  688. int length = binding.editTextTextPersonName5.getText().length();
  689. if (length >= 16) {
  690. ToastUtils.make(getContext(), "密码最多不能超过16位!");
  691. return;
  692. }
  693. int start = binding.editTextTextPersonName5.getSelectionStart();
  694. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "X" : "x");
  695. });
  696. binding.keyBoard.inputButtonC.setOnClickListener(v -> {
  697. if(!hasFocus){
  698. return;
  699. }
  700. int length = binding.editTextTextPersonName5.getText().length();
  701. if (length >= 16) {
  702. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  703. return;
  704. }
  705. int start = binding.editTextTextPersonName5.getSelectionStart();
  706. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "C" : "c");
  707. });
  708. binding.keyBoard.inputButtonV.setOnClickListener(v -> {
  709. if(!hasFocus){
  710. return;
  711. }
  712. int length = binding.editTextTextPersonName5.getText().length();
  713. if (length >= 16) {
  714. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  715. return;
  716. }
  717. int start = binding.editTextTextPersonName5.getSelectionStart();
  718. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "V" : "v");
  719. });
  720. binding.keyBoard.inputButtonB.setOnClickListener(v -> {
  721. if(!hasFocus){
  722. return;
  723. }
  724. int length = binding.editTextTextPersonName5.getText().length();
  725. if (length >= 16) {
  726. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  727. return;
  728. }
  729. int start = binding.editTextTextPersonName5.getSelectionStart();
  730. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "B" : "b");
  731. });
  732. binding.keyBoard.inputButtonN.setOnClickListener(v -> {
  733. if(!hasFocus){
  734. return;
  735. }
  736. int length = binding.editTextTextPersonName5.getText().length();
  737. if (length >= 16) {
  738. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  739. return;
  740. }
  741. int start = binding.editTextTextPersonName5.getSelectionStart();
  742. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "N" : "n");
  743. });
  744. binding.keyBoard.inputButtonM.setOnClickListener(v -> {
  745. if(!hasFocus){
  746. return;
  747. }
  748. int length = binding.editTextTextPersonName5.getText().length();
  749. if (length >= 16) {
  750. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  751. return;
  752. }
  753. int start = binding.editTextTextPersonName5.getSelectionStart();
  754. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "M" : "m");
  755. });
  756. // 符号
  757. binding.keyBoard.symbolButton1.setOnClickListener(v -> {
  758. if(!hasFocus){
  759. return;
  760. }
  761. int length = binding.editTextTextPersonName5.getText().length();
  762. if (length >= 16) {
  763. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  764. return;
  765. }
  766. int start = binding.editTextTextPersonName5.getSelectionStart();
  767. binding.editTextTextPersonName5.getText().insert(start, "-");
  768. });
  769. binding.keyBoard.symbolButton2.setOnClickListener(v -> {
  770. if(!hasFocus){
  771. return;
  772. }
  773. int length = binding.editTextTextPersonName5.getText().length();
  774. if (length >= 16) {
  775. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  776. return;
  777. }
  778. int start = binding.editTextTextPersonName5.getSelectionStart();
  779. binding.editTextTextPersonName5.getText().insert(start, "/");
  780. });
  781. binding.keyBoard.symbolButton3.setOnClickListener(v -> {
  782. if(!hasFocus){
  783. return;
  784. }
  785. int length = binding.editTextTextPersonName5.getText().length();
  786. if (length >= 16) {
  787. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  788. return;
  789. }
  790. int start = binding.editTextTextPersonName5.getSelectionStart();
  791. binding.editTextTextPersonName5.getText().insert(start, ":");
  792. });
  793. binding.keyBoard.symbolButton4.setOnClickListener(v -> {
  794. if(!hasFocus){
  795. return;
  796. }
  797. int length = binding.editTextTextPersonName5.getText().length();
  798. if (length >= 16) {
  799. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  800. return;
  801. }
  802. int start = binding.editTextTextPersonName5.getSelectionStart();
  803. binding.editTextTextPersonName5.getText().insert(start, "+");
  804. });
  805. binding.keyBoard.symbolButton5.setOnClickListener(v -> {
  806. if(!hasFocus){
  807. return;
  808. }
  809. int length = binding.editTextTextPersonName5.getText().length();
  810. if (length >= 16) {
  811. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  812. return;
  813. }
  814. int start = binding.editTextTextPersonName5.getSelectionStart();
  815. binding.editTextTextPersonName5.getText().insert(start, "(");
  816. });
  817. binding.keyBoard.symbolButton6.setOnClickListener(v -> {
  818. if(!hasFocus){
  819. return;
  820. }
  821. int length = binding.editTextTextPersonName5.getText().length();
  822. if (length >= 16) {
  823. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  824. return;
  825. }
  826. int start = binding.editTextTextPersonName5.getSelectionStart();
  827. binding.editTextTextPersonName5.getText().insert(start, ")");
  828. });
  829. binding.keyBoard.symbolButton7.setOnClickListener(v -> {
  830. if(!hasFocus){
  831. return;
  832. }
  833. int length = binding.editTextTextPersonName5.getText().length();
  834. if (length >= 16) {
  835. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  836. return;
  837. }
  838. int start = binding.editTextTextPersonName5.getSelectionStart();
  839. binding.editTextTextPersonName5.getText().insert(start, "#");
  840. });
  841. binding.keyBoard.symbolButton8.setOnClickListener(v -> {
  842. if(!hasFocus){
  843. return;
  844. }
  845. int length = binding.editTextTextPersonName5.getText().length();
  846. if (length >= 16) {
  847. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  848. return;
  849. }
  850. int start = binding.editTextTextPersonName5.getSelectionStart();
  851. binding.editTextTextPersonName5.getText().insert(start, "@");
  852. });
  853. binding.keyBoard.symbolButton9.setOnClickListener(v -> {
  854. if(!hasFocus){
  855. return;
  856. }
  857. int length = binding.editTextTextPersonName5.getText().length();
  858. if (length >= 16) {
  859. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  860. return;
  861. }
  862. int start = binding.editTextTextPersonName5.getSelectionStart();
  863. binding.editTextTextPersonName5.getText().insert(start, ".");
  864. });
  865. binding.keyBoard.symbolButton10.setOnClickListener(v -> {
  866. if(!hasFocus){
  867. return;
  868. }
  869. int length = binding.editTextTextPersonName5.getText().length();
  870. if (length >= 16) {
  871. ToastUtils.make(getContext(), "?");
  872. return;
  873. }
  874. int start = binding.editTextTextPersonName5.getSelectionStart();
  875. binding.editTextTextPersonName5.getText().insert(start, "!");
  876. });
  877. // 大小写按键绑定 默认大写
  878. binding.keyBoard.inputButtonCaseSmall.setOnClickListener(v -> {
  879. if (caseSmallFlag.get()) {
  880. caseSmallFlag.set(false);
  881. } else {
  882. caseSmallFlag.set(true);
  883. }
  884. binding.keyBoard.inputButtonCaseSmall.setText(caseSmallFlag.get() ? "大写" : "小写");
  885. // 设置键盘字母大小写
  886. binding.keyBoard.inputButtonQ.setText(caseSmallFlag.get() ? "Q" : "q");
  887. binding.keyBoard.inputButtonW.setText(caseSmallFlag.get() ? "W" : "w");
  888. binding.keyBoard.inputButtonE.setText(caseSmallFlag.get() ? "E" : "e");
  889. binding.keyBoard.inputButtonR.setText(caseSmallFlag.get() ? "R" : "r");
  890. binding.keyBoard.inputButtonT.setText(caseSmallFlag.get() ? "T" : "t");
  891. binding.keyBoard.inputButtonY.setText(caseSmallFlag.get() ? "Y" : "y");
  892. binding.keyBoard.inputButtonU.setText(caseSmallFlag.get() ? "U" : "u");
  893. binding.keyBoard.inputButtonI.setText(caseSmallFlag.get() ? "I" : "i");
  894. binding.keyBoard.inputButtonO.setText(caseSmallFlag.get() ? "O" : "o");
  895. binding.keyBoard.inputButtonP.setText(caseSmallFlag.get() ? "P" : "p");
  896. binding.keyBoard.inputButtonA.setText(caseSmallFlag.get() ? "A" : "a");
  897. binding.keyBoard.inputButtonS.setText(caseSmallFlag.get() ? "S" : "s");
  898. binding.keyBoard.inputButtonD.setText(caseSmallFlag.get() ? "D" : "d");
  899. binding.keyBoard.inputButtonF.setText(caseSmallFlag.get() ? "F" : "f");
  900. binding.keyBoard.inputButtonG.setText(caseSmallFlag.get() ? "G" : "g");
  901. binding.keyBoard.inputButtonH.setText(caseSmallFlag.get() ? "H" : "h");
  902. binding.keyBoard.inputButtonJ.setText(caseSmallFlag.get() ? "J" : "j");
  903. binding.keyBoard.inputButtonK.setText(caseSmallFlag.get() ? "K" : "k");
  904. binding.keyBoard.inputButtonL.setText(caseSmallFlag.get() ? "L" : "l");
  905. binding.keyBoard.inputButtonZ.setText(caseSmallFlag.get() ? "Z" : "z");
  906. binding.keyBoard.inputButtonX.setText(caseSmallFlag.get() ? "X" : "x");
  907. binding.keyBoard.inputButtonC.setText(caseSmallFlag.get() ? "C" : "c");
  908. binding.keyBoard.inputButtonV.setText(caseSmallFlag.get() ? "V" : "v");
  909. binding.keyBoard.inputButtonB.setText(caseSmallFlag.get() ? "B" : "b");
  910. binding.keyBoard.inputButtonN.setText(caseSmallFlag.get() ? "N" : "n");
  911. binding.keyBoard.inputButtonM.setText(caseSmallFlag.get() ? "M" : "m");
  912. });
  913. binding.keyBoard.inputButtonCancel.setOnClickListener(v -> {
  914. Editable text = binding.editTextTextPersonName5.getText();
  915. int start = binding.editTextTextPersonName5.getSelectionStart();
  916. if (text.length() > 0) {
  917. if (start > 0) {
  918. text.delete(start - 1, start);
  919. }
  920. binding.editTextTextPersonName5.setText(text, TextView.BufferType.EDITABLE);
  921. binding.editTextTextPersonName5.setSelection(start - 1 < 0 ? text.length() : start - 1);
  922. }
  923. });
  924. // 长按删除
  925. binding.keyBoard.inputButtonCancel.setOnLongClickListener(v -> {
  926. binding.editTextTextPersonName5.getText().clear();
  927. return false;
  928. });
  929. });
  930. binding.returnBtn.setOnClickListener(view1 -> {
  931. if (ButtonUtils.isFastClick()) {
  932. return;
  933. }
  934. if (null != timer) {
  935. timer.cancel();
  936. }
  937. NavUtils.navigate(this, R.id.action_sendFragment_to_mainFragment);
  938. });
  939. // 默认选中密码输入
  940. if (!StringUtils.isNullOrEmpty(binding.editTextTextPersonName4.getText().toString())) {
  941. binding.editTextTextPersonName5.requestFocus();
  942. } else {
  943. binding.editTextTextPersonName4.requestFocus();
  944. }
  945. }
  946. /**
  947. * 隐藏部分信息
  948. *
  949. * @param loginPhone 投递员手机号
  950. * @return 隐藏后的手机号
  951. */
  952. private String toHidePhone(String loginPhone) {
  953. StringBuilder stringBuilder = new StringBuilder();
  954. char[] chars = loginPhone.toCharArray();
  955. for (int i = 0; i < chars.length; i++) {
  956. if (i > 2 && i < 8) {
  957. stringBuilder.append('*');
  958. } else {
  959. stringBuilder.append(chars[i]);
  960. }
  961. }
  962. return stringBuilder.toString();
  963. }
  964. @Override
  965. public void onDestroyView() {
  966. if (timer != null) {
  967. timer.cancel();
  968. timer = null;
  969. }
  970. super.onDestroyView();
  971. binding = null;
  972. Log.i(TAG, TAG + "被销毁。。。");
  973. }
  974. }