| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- package com.ht.gate;
- import android.content.Context;
- import android.os.Bundle;
- import android.os.Handler;
- import android.text.TextUtils;
- import android.util.TypedValue;
- import android.view.Gravity;
- import android.view.View;
- import android.view.Window;
- import android.view.WindowManager;
- import android.widget.TextView;
- import androidx.appcompat.app.AppCompatDialog;
- import butterknife.BindView;
- import butterknife.ButterKnife;
- public class PasswordDialog extends AppCompatDialog {
- private final int MSG_HIDE_PASSWORD = 1;
- public interface DialogListener {
- void onCancel(PasswordDialog dialog);
- void onConfirm(PasswordDialog dialog, String password);
- }
- @BindView(R.id.keyboard_view)
- CustomKeyboardView keyboardView;
- @BindView(R.id.tv_room_name)
- TextView tv1;
- @BindView(R.id.tv_space_name)
- TextView tv2;
- @BindView(R.id.tv3)
- TextView tv3;
- @BindView(R.id.tv4)
- TextView tv4;
- private TextView[] textViews;
- private String password = "";
- private String passwordStr = "";
- private DialogListener listener;
- private Handler mHandler = new Handler(msg -> {
- switch (msg.what) {
- case MSG_HIDE_PASSWORD:
- passwordStr = passwordStr.replaceAll(".", "●");
- updatePasswordTv();
- break;
- }
- return true;
- });
- public PasswordDialog(Context context) {
- super(context, R.style.DialogStyle);
- }
- public void setListener(DialogListener listener) {
- this.listener = listener;
- }
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.dialog_password);
- ButterKnife.bind(this);
- Window window = getWindow();
- WindowManager.LayoutParams wlp = window.getAttributes();
- wlp.gravity = Gravity.BOTTOM;
- window.setAttributes(wlp);
- window.setWindowAnimations(R.style.DialogAnimation);
- window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
- View decorView = getWindow().getDecorView();
- int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
- | View.SYSTEM_UI_FLAG_FULLSCREEN
- | View.SYSTEM_UI_FLAG_IMMERSIVE;
- decorView.setSystemUiVisibility(uiOptions);
- textViews = new TextView[]{tv1, tv2, tv3, tv4};
- keyboardView.setKeyboardActionListener(new CustomKeyboardView.OnKeyboardActionListener() {
- @Override
- public void onPress(int primaryCode) {
- }
- @Override
- public void onRelease(int primaryCode) {
- }
- @Override
- public void onKey(int primaryCode, int[] keyCodes) {
- switch (primaryCode) {
- case CustomKeyboardView.KEYCODE_CANCEL:
- if (listener != null) {
- listener.onCancel(PasswordDialog.this);
- }
- break;
- case CustomKeyboardView.KEYCODE_DONE:
- if (listener != null) {
- listener.onConfirm(PasswordDialog.this, password);
- }
- break;
- case CustomKeyboardView.KEYCODE_DELETE:
- if (password.length() > 0) {
- password = password.substring(0, password.length() - 1);
- passwordStr = password.replaceAll(".", "●");
- updatePasswordTv();
- }
- break;
- default:
- String str = Character.toString((char) primaryCode);
- if (!TextUtils.isEmpty(str) && password.length() < 4) {
- str = str.substring(0, 1);
- password += str;
- passwordStr = password.substring(0, password.length() - 1).replaceAll(".", "●") + str;
- updatePasswordTv();
- }
- mHandler.removeMessages(MSG_HIDE_PASSWORD);
- mHandler.sendEmptyMessageDelayed(MSG_HIDE_PASSWORD, 1000);
- if (password.length() == 4) {
- if (listener != null) {
- listener.onConfirm(PasswordDialog.this, password);
- }
- }
- break;
- }
- }
- @Override
- public void onText(CharSequence text) {
- }
- });
- }
- private void updatePasswordTv() {
- for (int i = 0; i < textViews.length; i++) {
- if (passwordStr.length() > i) {
- textViews[i].setText(passwordStr.charAt(i) + "");
- } else {
- textViews[i].setText("");
- }
- if (textViews[i].getText().toString().equals("●")) {
- textViews[i].setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
- } else {
- textViews[i].setTextSize(TypedValue.COMPLEX_UNIT_SP, 37);
- }
- }
- }
- }
|