SendKeyBoardFragment.java 47 KB

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