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, 120);
  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. // "30"为供应链账号,定为管理员账号
  264. if("store".equals(finalLoginType) ){
  265. if("10".equals(data.getDelType()) || "30".equals(data.getDelType())){
  266. NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_sendMainFragment);
  267. } else {
  268. ToastUtils.make(getContext(), "请用门店账号登录!");
  269. return;
  270. }
  271. }else {
  272. if("20".equals(data.getDelType()) || "30".equals(data.getDelType())){
  273. NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_sendMainFragment);
  274. } else {
  275. ToastUtils.make(getContext(), "请用快递员账号登录!");
  276. return;
  277. }
  278. }
  279. // if ("0".equals(data.getIsPay())){
  280. // NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_paymentFragment);
  281. // }else {
  282. // NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_sendMainFragment);
  283. // }
  284. }else{
  285. if(!"20".equals(data.getDelType())){
  286. ToastUtils.make(getContext(), "请用快递员账号登录!");
  287. return;
  288. }
  289. NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_collectMaterialsFragment);
  290. }
  291. } else {
  292. ToastUtils.make(getContext(), responseData.getMsg());
  293. Log.w(TAG, "onResponse: " + responseData.getMsg());
  294. }
  295. } catch (JsonProcessingException e) {
  296. Log.e(TAG, "onViewCreated: 解析登录响应信息错误! response body: " + responseStr, e);
  297. ToastUtils.make(getContext(), "登录失败!");
  298. LoggingUtils.sendErrorLog("业务异常: 登录失败!", e);
  299. } catch (ClassCastException e) {
  300. Log.e(TAG, "onResponse: 解析登录响应信息类型转换错误! response body: " + responseStr, e);
  301. ToastUtils.make(getContext(), "登录失败!");
  302. LoggingUtils.sendErrorLog("业务异常: 登录失败!", e);
  303. } catch (RuntimeException e) {
  304. Log.e(TAG, "onResponse: 登录失败! ", e);
  305. ToastUtils.make(getContext(), "登录失败!");
  306. LoggingUtils.sendErrorLog("业务异常: 登录失败!未知错误! ", e);
  307. }
  308. } else {
  309. // 登录失败
  310. ToastUtils.make(getContext(), "服务异常!请稍后重试!");
  311. }
  312. });
  313. }
  314. });
  315. } else if (!phonePattern.matcher(sendPhone).matches()) {
  316. ToastUtils.make(getContext(), "输入正确的手机号!");
  317. } else if (!pwdPattern.matcher(password).matches()) {
  318. ToastUtils.make(getContext(), "密码格式错误!请输入8-16位的数字!");
  319. }
  320. });
  321. // 密码
  322. binding.editTextTextPersonName5.setOnFocusChangeListener((view1, hasFocus) -> {
  323. AtomicBoolean caseSmallFlag = new AtomicBoolean(true);
  324. binding.keyBoard.inputButton0.setOnClickListener(v -> {
  325. if(!hasFocus){
  326. return;
  327. }
  328. int length = binding.editTextTextPersonName5.getText().length();
  329. if (length >= 16) {
  330. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  331. return;
  332. }
  333. int start = binding.editTextTextPersonName5.getSelectionStart();
  334. binding.editTextTextPersonName5.getText().insert(start, "0");
  335. });
  336. binding.keyBoard.inputButton1.setOnClickListener(v -> {
  337. if(!hasFocus){
  338. return;
  339. }
  340. int length = binding.editTextTextPersonName5.getText().length();
  341. if (length >= 16) {
  342. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  343. return;
  344. }
  345. int start = binding.editTextTextPersonName5.getSelectionStart();
  346. binding.editTextTextPersonName5.getText().insert(start, "1");
  347. });
  348. binding.keyBoard.inputButton2.setOnClickListener(v -> {
  349. if(!hasFocus){
  350. return;
  351. }
  352. int length = binding.editTextTextPersonName5.getText().length();
  353. if (length >= 16) {
  354. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  355. return;
  356. }
  357. int start = binding.editTextTextPersonName5.getSelectionStart();
  358. binding.editTextTextPersonName5.getText().insert(start, "2");
  359. });
  360. binding.keyBoard.inputButton3.setOnClickListener(v -> {
  361. if(!hasFocus){
  362. return;
  363. }
  364. int length = binding.editTextTextPersonName5.getText().length();
  365. if (length >= 16) {
  366. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  367. return;
  368. }
  369. int start = binding.editTextTextPersonName5.getSelectionStart();
  370. binding.editTextTextPersonName5.getText().insert(start, "3");
  371. });
  372. binding.keyBoard.inputButton4.setOnClickListener(v -> {
  373. if(!hasFocus){
  374. return;
  375. }
  376. int length = binding.editTextTextPersonName5.getText().length();
  377. if (length >= 16) {
  378. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  379. return;
  380. }
  381. int start = binding.editTextTextPersonName5.getSelectionStart();
  382. binding.editTextTextPersonName5.getText().insert(start, "4");
  383. });
  384. binding.keyBoard.inputButton5.setOnClickListener(v -> {
  385. if(!hasFocus){
  386. return;
  387. }
  388. int length = binding.editTextTextPersonName5.getText().length();
  389. if (length >= 16) {
  390. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  391. return;
  392. }
  393. int start = binding.editTextTextPersonName5.getSelectionStart();
  394. binding.editTextTextPersonName5.getText().insert(start, "5");
  395. });
  396. binding.keyBoard.inputButton6.setOnClickListener(v -> {
  397. if(!hasFocus){
  398. return;
  399. }
  400. int length = binding.editTextTextPersonName5.getText().length();
  401. if (length >= 16) {
  402. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  403. return;
  404. }
  405. int start = binding.editTextTextPersonName5.getSelectionStart();
  406. binding.editTextTextPersonName5.getText().insert(start, "6");
  407. });
  408. binding.keyBoard.inputButton7.setOnClickListener(v -> {
  409. if(!hasFocus){
  410. return;
  411. }
  412. int length = binding.editTextTextPersonName5.getText().length();
  413. if (length >= 16) {
  414. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  415. return;
  416. }
  417. int start = binding.editTextTextPersonName5.getSelectionStart();
  418. binding.editTextTextPersonName5.getText().insert(start, "7");
  419. });
  420. binding.keyBoard.inputButton8.setOnClickListener(v -> {
  421. if(!hasFocus){
  422. return;
  423. }
  424. int length = binding.editTextTextPersonName5.getText().length();
  425. if (length >= 16) {
  426. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  427. return;
  428. }
  429. int start = binding.editTextTextPersonName5.getSelectionStart();
  430. binding.editTextTextPersonName5.getText().insert(start, "8");
  431. });
  432. binding.keyBoard.inputButton9.setOnClickListener(v -> {
  433. if(!hasFocus){
  434. return;
  435. }
  436. int length = binding.editTextTextPersonName5.getText().length();
  437. if (length >= 16) {
  438. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  439. return;
  440. }
  441. int start = binding.editTextTextPersonName5.getSelectionStart();
  442. binding.editTextTextPersonName5.getText().insert(start, "9");
  443. });
  444. // todo:绑定字母按键
  445. binding.keyBoard.inputButtonQ.setOnClickListener(v -> {
  446. if(!hasFocus){
  447. return;
  448. }
  449. int length = binding.editTextTextPersonName5.getText().length();
  450. if (length >= 16) {
  451. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  452. return;
  453. }
  454. int start = binding.editTextTextPersonName5.getSelectionStart();
  455. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "Q" : "q");
  456. });
  457. binding.keyBoard.inputButtonW.setOnClickListener(v -> {
  458. if(!hasFocus){
  459. return;
  460. }
  461. int length = binding.editTextTextPersonName5.getText().length();
  462. if (length >= 16) {
  463. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  464. return;
  465. }
  466. int start = binding.editTextTextPersonName5.getSelectionStart();
  467. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "W" : "w");
  468. });
  469. binding.keyBoard.inputButtonE.setOnClickListener(v -> {
  470. if(!hasFocus){
  471. return;
  472. }
  473. int length = binding.editTextTextPersonName5.getText().length();
  474. if (length >= 16) {
  475. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  476. return;
  477. }
  478. int start = binding.editTextTextPersonName5.getSelectionStart();
  479. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "E" : "e");
  480. });
  481. binding.keyBoard.inputButtonR.setOnClickListener(v -> {
  482. if(!hasFocus){
  483. return;
  484. }
  485. int length = binding.editTextTextPersonName5.getText().length();
  486. if (length >= 16) {
  487. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  488. return;
  489. }
  490. int start = binding.editTextTextPersonName5.getSelectionStart();
  491. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "R" : "r");
  492. });
  493. binding.keyBoard.inputButtonT.setOnClickListener(v -> {
  494. if(!hasFocus){
  495. return;
  496. }
  497. int length = binding.editTextTextPersonName5.getText().length();
  498. if (length >= 16) {
  499. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  500. return;
  501. }
  502. int start = binding.editTextTextPersonName5.getSelectionStart();
  503. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "T" : "t");
  504. });
  505. binding.keyBoard.inputButtonY.setOnClickListener(v -> {
  506. if(!hasFocus){
  507. return;
  508. }
  509. int length = binding.editTextTextPersonName5.getText().length();
  510. if (length >= 16) {
  511. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  512. return;
  513. }
  514. int start = binding.editTextTextPersonName5.getSelectionStart();
  515. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "Y" : "y");
  516. });
  517. binding.keyBoard.inputButtonU.setOnClickListener(v -> {
  518. if(!hasFocus){
  519. return;
  520. }
  521. int length = binding.editTextTextPersonName5.getText().length();
  522. if (length >= 16) {
  523. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  524. return;
  525. }
  526. int start = binding.editTextTextPersonName5.getSelectionStart();
  527. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "U" : "u");
  528. });
  529. binding.keyBoard.inputButtonI.setOnClickListener(v -> {
  530. if(!hasFocus){
  531. return;
  532. }
  533. int length = binding.editTextTextPersonName5.getText().length();
  534. if (length >= 16) {
  535. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  536. return;
  537. }
  538. int start = binding.editTextTextPersonName5.getSelectionStart();
  539. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "I" : "i");
  540. });
  541. binding.keyBoard.inputButtonO.setOnClickListener(v -> {
  542. if(!hasFocus){
  543. return;
  544. }
  545. int length = binding.editTextTextPersonName5.getText().length();
  546. if (length >= 16) {
  547. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  548. return;
  549. }
  550. int start = binding.editTextTextPersonName5.getSelectionStart();
  551. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "O" : "o");
  552. });
  553. binding.keyBoard.inputButtonP.setOnClickListener(v -> {
  554. if(!hasFocus){
  555. return;
  556. }
  557. int length = binding.editTextTextPersonName5.getText().length();
  558. if (length >= 16) {
  559. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  560. return;
  561. }
  562. int start = binding.editTextTextPersonName5.getSelectionStart();
  563. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "P" : "p");
  564. });
  565. binding.keyBoard.inputButtonA.setOnClickListener(v -> {
  566. if(!hasFocus){
  567. return;
  568. }
  569. int length = binding.editTextTextPersonName5.getText().length();
  570. if (length >= 16) {
  571. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  572. return;
  573. }
  574. int start = binding.editTextTextPersonName5.getSelectionStart();
  575. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "A" : "a");
  576. });
  577. binding.keyBoard.inputButtonS.setOnClickListener(v -> {
  578. if(!hasFocus){
  579. return;
  580. }
  581. int length = binding.editTextTextPersonName5.getText().length();
  582. if (length >= 16) {
  583. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  584. return;
  585. }
  586. int start = binding.editTextTextPersonName5.getSelectionStart();
  587. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "S" : "s");
  588. });
  589. binding.keyBoard.inputButtonD.setOnClickListener(v -> {
  590. if(!hasFocus){
  591. return;
  592. }
  593. int length = binding.editTextTextPersonName5.getText().length();
  594. if (length >= 16) {
  595. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  596. return;
  597. }
  598. int start = binding.editTextTextPersonName5.getSelectionStart();
  599. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "D" : "d");
  600. });
  601. binding.keyBoard.inputButtonF.setOnClickListener(v -> {
  602. if(!hasFocus){
  603. return;
  604. }
  605. int length = binding.editTextTextPersonName5.getText().length();
  606. if (length >= 16) {
  607. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  608. return;
  609. }
  610. int start = binding.editTextTextPersonName5.getSelectionStart();
  611. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "F" : "f");
  612. });
  613. binding.keyBoard.inputButtonG.setOnClickListener(v -> {
  614. if(!hasFocus){
  615. return;
  616. }
  617. int length = binding.editTextTextPersonName5.getText().length();
  618. if (length >= 16) {
  619. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  620. return;
  621. }
  622. int start = binding.editTextTextPersonName5.getSelectionStart();
  623. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "G" : "g");
  624. });
  625. binding.keyBoard.inputButtonH.setOnClickListener(v -> {
  626. if(!hasFocus){
  627. return;
  628. }
  629. int length = binding.editTextTextPersonName5.getText().length();
  630. if (length >= 16) {
  631. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  632. return;
  633. }
  634. int start = binding.editTextTextPersonName5.getSelectionStart();
  635. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "H" : "h");
  636. });
  637. binding.keyBoard.inputButtonJ.setOnClickListener(v -> {
  638. if(!hasFocus){
  639. return;
  640. }
  641. int length = binding.editTextTextPersonName5.getText().length();
  642. if (length >= 16) {
  643. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  644. return;
  645. }
  646. int start = binding.editTextTextPersonName5.getSelectionStart();
  647. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "J" : "j");
  648. });
  649. binding.keyBoard.inputButtonK.setOnClickListener(v -> {
  650. if(!hasFocus){
  651. return;
  652. }
  653. int length = binding.editTextTextPersonName5.getText().length();
  654. if (length >= 16) {
  655. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  656. return;
  657. }
  658. int start = binding.editTextTextPersonName5.getSelectionStart();
  659. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "K" : "k");
  660. });
  661. binding.keyBoard.inputButtonL.setOnClickListener(v -> {
  662. if(!hasFocus){
  663. return;
  664. }
  665. int length = binding.editTextTextPersonName5.getText().length();
  666. if (length >= 16) {
  667. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  668. return;
  669. }
  670. int start = binding.editTextTextPersonName5.getSelectionStart();
  671. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "L" : "l");
  672. });
  673. binding.keyBoard.inputButtonZ.setOnClickListener(v -> {
  674. if(!hasFocus){
  675. return;
  676. }
  677. int length = binding.editTextTextPersonName5.getText().length();
  678. if (length >= 16) {
  679. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  680. return;
  681. }
  682. int start = binding.editTextTextPersonName5.getSelectionStart();
  683. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "Z" : "z");
  684. });
  685. binding.keyBoard.inputButtonX.setOnClickListener(v -> {
  686. if(!hasFocus){
  687. return;
  688. }
  689. int length = binding.editTextTextPersonName5.getText().length();
  690. if (length >= 16) {
  691. ToastUtils.make(getContext(), "密码最多不能超过16位!");
  692. return;
  693. }
  694. int start = binding.editTextTextPersonName5.getSelectionStart();
  695. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "X" : "x");
  696. });
  697. binding.keyBoard.inputButtonC.setOnClickListener(v -> {
  698. if(!hasFocus){
  699. return;
  700. }
  701. int length = binding.editTextTextPersonName5.getText().length();
  702. if (length >= 16) {
  703. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  704. return;
  705. }
  706. int start = binding.editTextTextPersonName5.getSelectionStart();
  707. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "C" : "c");
  708. });
  709. binding.keyBoard.inputButtonV.setOnClickListener(v -> {
  710. if(!hasFocus){
  711. return;
  712. }
  713. int length = binding.editTextTextPersonName5.getText().length();
  714. if (length >= 16) {
  715. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  716. return;
  717. }
  718. int start = binding.editTextTextPersonName5.getSelectionStart();
  719. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "V" : "v");
  720. });
  721. binding.keyBoard.inputButtonB.setOnClickListener(v -> {
  722. if(!hasFocus){
  723. return;
  724. }
  725. int length = binding.editTextTextPersonName5.getText().length();
  726. if (length >= 16) {
  727. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  728. return;
  729. }
  730. int start = binding.editTextTextPersonName5.getSelectionStart();
  731. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "B" : "b");
  732. });
  733. binding.keyBoard.inputButtonN.setOnClickListener(v -> {
  734. if(!hasFocus){
  735. return;
  736. }
  737. int length = binding.editTextTextPersonName5.getText().length();
  738. if (length >= 16) {
  739. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  740. return;
  741. }
  742. int start = binding.editTextTextPersonName5.getSelectionStart();
  743. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "N" : "n");
  744. });
  745. binding.keyBoard.inputButtonM.setOnClickListener(v -> {
  746. if(!hasFocus){
  747. return;
  748. }
  749. int length = binding.editTextTextPersonName5.getText().length();
  750. if (length >= 16) {
  751. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  752. return;
  753. }
  754. int start = binding.editTextTextPersonName5.getSelectionStart();
  755. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "M" : "m");
  756. });
  757. // 符号
  758. binding.keyBoard.symbolButton1.setOnClickListener(v -> {
  759. if(!hasFocus){
  760. return;
  761. }
  762. int length = binding.editTextTextPersonName5.getText().length();
  763. if (length >= 16) {
  764. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  765. return;
  766. }
  767. int start = binding.editTextTextPersonName5.getSelectionStart();
  768. binding.editTextTextPersonName5.getText().insert(start, "-");
  769. });
  770. binding.keyBoard.symbolButton2.setOnClickListener(v -> {
  771. if(!hasFocus){
  772. return;
  773. }
  774. int length = binding.editTextTextPersonName5.getText().length();
  775. if (length >= 16) {
  776. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  777. return;
  778. }
  779. int start = binding.editTextTextPersonName5.getSelectionStart();
  780. binding.editTextTextPersonName5.getText().insert(start, "/");
  781. });
  782. binding.keyBoard.symbolButton3.setOnClickListener(v -> {
  783. if(!hasFocus){
  784. return;
  785. }
  786. int length = binding.editTextTextPersonName5.getText().length();
  787. if (length >= 16) {
  788. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  789. return;
  790. }
  791. int start = binding.editTextTextPersonName5.getSelectionStart();
  792. binding.editTextTextPersonName5.getText().insert(start, ":");
  793. });
  794. binding.keyBoard.symbolButton4.setOnClickListener(v -> {
  795. if(!hasFocus){
  796. return;
  797. }
  798. int length = binding.editTextTextPersonName5.getText().length();
  799. if (length >= 16) {
  800. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  801. return;
  802. }
  803. int start = binding.editTextTextPersonName5.getSelectionStart();
  804. binding.editTextTextPersonName5.getText().insert(start, "+");
  805. });
  806. binding.keyBoard.symbolButton5.setOnClickListener(v -> {
  807. if(!hasFocus){
  808. return;
  809. }
  810. int length = binding.editTextTextPersonName5.getText().length();
  811. if (length >= 16) {
  812. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  813. return;
  814. }
  815. int start = binding.editTextTextPersonName5.getSelectionStart();
  816. binding.editTextTextPersonName5.getText().insert(start, "(");
  817. });
  818. binding.keyBoard.symbolButton6.setOnClickListener(v -> {
  819. if(!hasFocus){
  820. return;
  821. }
  822. int length = binding.editTextTextPersonName5.getText().length();
  823. if (length >= 16) {
  824. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  825. return;
  826. }
  827. int start = binding.editTextTextPersonName5.getSelectionStart();
  828. binding.editTextTextPersonName5.getText().insert(start, ")");
  829. });
  830. binding.keyBoard.symbolButton7.setOnClickListener(v -> {
  831. if(!hasFocus){
  832. return;
  833. }
  834. int length = binding.editTextTextPersonName5.getText().length();
  835. if (length >= 16) {
  836. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  837. return;
  838. }
  839. int start = binding.editTextTextPersonName5.getSelectionStart();
  840. binding.editTextTextPersonName5.getText().insert(start, "#");
  841. });
  842. binding.keyBoard.symbolButton8.setOnClickListener(v -> {
  843. if(!hasFocus){
  844. return;
  845. }
  846. int length = binding.editTextTextPersonName5.getText().length();
  847. if (length >= 16) {
  848. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  849. return;
  850. }
  851. int start = binding.editTextTextPersonName5.getSelectionStart();
  852. binding.editTextTextPersonName5.getText().insert(start, "@");
  853. });
  854. binding.keyBoard.symbolButton9.setOnClickListener(v -> {
  855. if(!hasFocus){
  856. return;
  857. }
  858. int length = binding.editTextTextPersonName5.getText().length();
  859. if (length >= 16) {
  860. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  861. return;
  862. }
  863. int start = binding.editTextTextPersonName5.getSelectionStart();
  864. binding.editTextTextPersonName5.getText().insert(start, ".");
  865. });
  866. binding.keyBoard.symbolButton10.setOnClickListener(v -> {
  867. if(!hasFocus){
  868. return;
  869. }
  870. int length = binding.editTextTextPersonName5.getText().length();
  871. if (length >= 16) {
  872. ToastUtils.make(getContext(), "?");
  873. return;
  874. }
  875. int start = binding.editTextTextPersonName5.getSelectionStart();
  876. binding.editTextTextPersonName5.getText().insert(start, "!");
  877. });
  878. // 大小写按键绑定 默认大写
  879. binding.keyBoard.inputButtonCaseSmall.setOnClickListener(v -> {
  880. if (caseSmallFlag.get()) {
  881. caseSmallFlag.set(false);
  882. } else {
  883. caseSmallFlag.set(true);
  884. }
  885. binding.keyBoard.inputButtonCaseSmall.setText(caseSmallFlag.get() ? "大写" : "小写");
  886. // 设置键盘字母大小写
  887. binding.keyBoard.inputButtonQ.setText(caseSmallFlag.get() ? "Q" : "q");
  888. binding.keyBoard.inputButtonW.setText(caseSmallFlag.get() ? "W" : "w");
  889. binding.keyBoard.inputButtonE.setText(caseSmallFlag.get() ? "E" : "e");
  890. binding.keyBoard.inputButtonR.setText(caseSmallFlag.get() ? "R" : "r");
  891. binding.keyBoard.inputButtonT.setText(caseSmallFlag.get() ? "T" : "t");
  892. binding.keyBoard.inputButtonY.setText(caseSmallFlag.get() ? "Y" : "y");
  893. binding.keyBoard.inputButtonU.setText(caseSmallFlag.get() ? "U" : "u");
  894. binding.keyBoard.inputButtonI.setText(caseSmallFlag.get() ? "I" : "i");
  895. binding.keyBoard.inputButtonO.setText(caseSmallFlag.get() ? "O" : "o");
  896. binding.keyBoard.inputButtonP.setText(caseSmallFlag.get() ? "P" : "p");
  897. binding.keyBoard.inputButtonA.setText(caseSmallFlag.get() ? "A" : "a");
  898. binding.keyBoard.inputButtonS.setText(caseSmallFlag.get() ? "S" : "s");
  899. binding.keyBoard.inputButtonD.setText(caseSmallFlag.get() ? "D" : "d");
  900. binding.keyBoard.inputButtonF.setText(caseSmallFlag.get() ? "F" : "f");
  901. binding.keyBoard.inputButtonG.setText(caseSmallFlag.get() ? "G" : "g");
  902. binding.keyBoard.inputButtonH.setText(caseSmallFlag.get() ? "H" : "h");
  903. binding.keyBoard.inputButtonJ.setText(caseSmallFlag.get() ? "J" : "j");
  904. binding.keyBoard.inputButtonK.setText(caseSmallFlag.get() ? "K" : "k");
  905. binding.keyBoard.inputButtonL.setText(caseSmallFlag.get() ? "L" : "l");
  906. binding.keyBoard.inputButtonZ.setText(caseSmallFlag.get() ? "Z" : "z");
  907. binding.keyBoard.inputButtonX.setText(caseSmallFlag.get() ? "X" : "x");
  908. binding.keyBoard.inputButtonC.setText(caseSmallFlag.get() ? "C" : "c");
  909. binding.keyBoard.inputButtonV.setText(caseSmallFlag.get() ? "V" : "v");
  910. binding.keyBoard.inputButtonB.setText(caseSmallFlag.get() ? "B" : "b");
  911. binding.keyBoard.inputButtonN.setText(caseSmallFlag.get() ? "N" : "n");
  912. binding.keyBoard.inputButtonM.setText(caseSmallFlag.get() ? "M" : "m");
  913. });
  914. binding.keyBoard.inputButtonCancel.setOnClickListener(v -> {
  915. Editable text = binding.editTextTextPersonName5.getText();
  916. int start = binding.editTextTextPersonName5.getSelectionStart();
  917. if (text.length() > 0) {
  918. if (start > 0) {
  919. text.delete(start - 1, start);
  920. }
  921. binding.editTextTextPersonName5.setText(text, TextView.BufferType.EDITABLE);
  922. binding.editTextTextPersonName5.setSelection(start - 1 < 0 ? text.length() : start - 1);
  923. }
  924. });
  925. // 长按删除
  926. binding.keyBoard.inputButtonCancel.setOnLongClickListener(v -> {
  927. binding.editTextTextPersonName5.getText().clear();
  928. return false;
  929. });
  930. });
  931. binding.returnBtn.setOnClickListener(view1 -> {
  932. if (ButtonUtils.isFastClick()) {
  933. return;
  934. }
  935. if (null != timer) {
  936. timer.cancel();
  937. }
  938. NavUtils.navigate(this, R.id.action_sendFragment_to_mainFragment);
  939. });
  940. // 默认选中密码输入
  941. if (!StringUtils.isNullOrEmpty(binding.editTextTextPersonName4.getText().toString())) {
  942. binding.editTextTextPersonName5.requestFocus();
  943. } else {
  944. binding.editTextTextPersonName4.requestFocus();
  945. }
  946. }
  947. /**
  948. * 隐藏部分信息
  949. *
  950. * @param loginPhone 投递员手机号
  951. * @return 隐藏后的手机号
  952. */
  953. private String toHidePhone(String loginPhone) {
  954. StringBuilder stringBuilder = new StringBuilder();
  955. char[] chars = loginPhone.toCharArray();
  956. for (int i = 0; i < chars.length; i++) {
  957. if (i > 2 && i < 8) {
  958. stringBuilder.append('*');
  959. } else {
  960. stringBuilder.append(chars[i]);
  961. }
  962. }
  963. return stringBuilder.toString();
  964. }
  965. @Override
  966. public void onDestroyView() {
  967. if (timer != null) {
  968. timer.cancel();
  969. timer = null;
  970. }
  971. super.onDestroyView();
  972. binding = null;
  973. Log.i(TAG, TAG + "被销毁。。。");
  974. }
  975. }