package com.ht.gate; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; import android.text.Editable; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.widget.EditText; import com.ht.gate.activity.MainActivity; import butterknife.BindView; import butterknife.ButterKnife; public class LoginActivity extends AppCompatActivity { @BindView(R.id.parent_layout) ConstraintLayout parentLayout; @BindView(R.id.keyboard_view) CustomKeyboardView keyboardView; @BindView(R.id.et) EditText et; @BindView(R.id.unlock_view) UnlockView unlockView; private boolean captalize; private KeyboardUtil keyboardUtil; @SuppressLint("ClickableViewAccessibility") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); ButterKnife.bind(this); unlockView.setUnlockListener(() -> { unlockView.setVisibility(View.GONE); et.setVisibility(View.VISIBLE); keyboardView.show(); }); et.setOnTouchListener((v, event) -> { if (event.getAction() == MotionEvent.ACTION_UP) { if (keyboardView.getVisibility() == View.GONE) { keyboardView.show(); } } return true; }); 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) { Log.d("onKey", primaryCode + ""); Editable editable = et.getText(); int start = et.getSelectionStart(); switch (primaryCode) { case CustomKeyboardView.KEYCODE_SHIFT: captalize = !captalize; break; case CustomKeyboardView.KEYCODE_CANCEL: keyboardView.hide(); et.setVisibility(View.GONE); unlockView.setVisibility(View.VISIBLE); break; case CustomKeyboardView.KEYCODE_DONE: startActivity(new Intent(LoginActivity.this, MainActivity.class)); break; case CustomKeyboardView.KEYCODE_DELETE: if (editable != null && editable.length() > 0) { if (start > 0) { editable.delete(start - 1, start); } } break; default: String str = Character.toString((char) primaryCode); editable.insert(start, captalize ? str.toUpperCase() : str.toLowerCase()); break; } } @Override public void onText(CharSequence text) { } }); } @Override protected void onResume() { super.onResume(); 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); } }