custom keyboard
unknown
java
2 years ago
7.1 kB
30
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...