custom keyboard
unknown
java
2 years ago
7.1 kB
28
Indexable
package id.kelolagudang.keyboard; import android.annotation.SuppressLint; import android.app.AlertDialog; import android.app.Service; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.inputmethodservice.InputMethodService; import android.inputmethodservice.Keyboard; import android.inputmethodservice.KeyboardView; import android.media.AudioManager; import android.os.IBinder; import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager; import android.view.inputmethod.InputConnection; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.PopupWindow; public class KelolaKeyboard extends InputMethodService implements KeyboardView.OnKeyboardActionListener { private KeyboardView kv; private Keyboard keyboard; private boolean isCaps = false; private EditText editTextEmail; private EditText editTextPassword; private Button btnLogin; //Press Ctrl+O @SuppressLint("InflateParams") @Override public View onCreateInputView() { //NOTE : INIT KEYBOARD kv = (KeyboardView)getLayoutInflater().inflate(R.layout.keyboard, null, false); keyboard = new Keyboard(this,R.xml.qwerty); kv.setKeyboard(keyboard); kv.setOnKeyboardActionListener(this); // getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); return kv; } @Override public void onPress(int i) { } @Override public void onRelease(int i) { // LayoutInflater inflater = (LayoutInflater) // getSystemService(LAYOUT_INFLATER_SERVICE); // View popupView = inflater.inflate(R.layout.popup, null); // // // create the popup window // int width = LinearLayout.LayoutParams.WRAP_CONTENT; // int height = LinearLayout.LayoutParams.WRAP_CONTENT; // boolean focusable = false; // lets taps outside the popup also dismiss it // final PopupWindow popupWindow = new PopupWindow(popupView, width, height, focusable); // // // show the popup window // // which view you pass in doesn't matter, it is only used for the window tolken // boolean popupshowing = false; // popupWindow.showAtLocation(kv, Gravity.CENTER, 0, -800); // popupWindow.setFocusable(popupshowing); // popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); // popupWindow.update(); // // // // editTextEmail = popupView.findViewById(R.id.editTextEmail); // editTextPassword = popupView.findViewById(R.id.editTextPassword); // btnLogin = popupView.findViewById(R.id.btnLogin); } @Override public void onKey(int i, int[] ints) { InputConnection ic = getCurrentInputConnection(); playClick(i); System.out.println("i = "); System.out.println(String.valueOf(i)); switch (i) { case Keyboard.KEYCODE_DELETE: ic.deleteSurroundingText(1,0); break; case -5000: // keyboard = new Keyboard(this,R.xml.number); // // kv.setKeyboard(keyboard); // kv.setOnKeyboardActionListener(this); // kv.clearFocus(); // //// //NOTE : POP UP WINDOW LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); View popupView = inflater.inflate(R.layout.popup, null); // create the popup window int width = LinearLayout.LayoutParams.MATCH_PARENT; int height = LinearLayout.LayoutParams.WRAP_CONTENT; boolean focusable = false; // lets taps outside the popup also dismiss it final PopupWindow popupWindow = new PopupWindow(popupView, width, height, focusable); // show the popup window // which view you pass in doesn't matter, it is only used for the window tolken popupWindow.showAtLocation(kv, Gravity.CENTER, 0, -600); popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); popupWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); popupWindow.isOutsideTouchable(); popupWindow.update(); editTextEmail = popupView.findViewById(R.id.editTextEmail); editTextPassword = popupView.findViewById(R.id.editTextPassword); btnLogin = popupView.findViewById(R.id.btnLogin); // editTextEmail.requestFocus(); // InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); // imm.showSoftInput(editTextEmail, InputMethodManager.SHOW_IMPLICIT); System.out.println("open app kelola"); break; case Keyboard.KEYCODE_SHIFT: isCaps = !isCaps; keyboard.setShifted(isCaps); kv.invalidateAllKeys(); break; case Keyboard.KEYCODE_DONE: ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_ENTER)); break; default: char code = (char)i; System.out.println(String.valueOf(code)); if(Character.isLetter(code) && isCaps) code = Character.toUpperCase(code); ic.commitText(String.valueOf(code),1); } } private void playClick(int i) { AudioManager am = (AudioManager)getSystemService(AUDIO_SERVICE); switch(i) { case 32: am.playSoundEffect(AudioManager.FX_KEYPRESS_SPACEBAR); break; case -5000: System.out.println("open app kelola"); break; case Keyboard.KEYCODE_DONE: case 10: am.playSoundEffect(AudioManager.FX_KEYPRESS_RETURN); break; case Keyboard.KEYCODE_DELETE: am.playSoundEffect(AudioManager.FX_KEYPRESS_DELETE); break; default: am.playSoundEffect(AudioManager.FX_KEYPRESS_STANDARD); } } @Override public void onText(CharSequence charSequence) { } @Override public void swipeLeft() { } @Override public void swipeRight() { } @Override public void swipeDown() { } @Override public void swipeUp() { } }
Editor is loading...