0
点赞
收藏
分享

微信扫一扫

Android 应用内自定义随机布局输入法

西红柿上校 2022-04-17 阅读 33

package com.demo.customime;

public interface Constant {

int CodeDelete = 60001;

int CodeCancel = 60002;

}

KeyboardBuilder

package com.demo.customime;

import android.app.Activity;

import android.inputmethodservice.Keyboard;

import android.inputmethodservice.KeyboardView;

import android.text.Editable;

import android.text.InputType;

import android.util.Log;

import android.view.MotionEvent;

import android.view.View;

import android.view.inputmethod.InputMethodManager;

import android.widget.EditText;

public class KeyboardBuilder {

private static final String TAG = “KeyboardBuilder”;

private Activity mActivity;

private KeyboardView mKeyboardView;

public KeyboardBuilder(Activity ac, KeyboardView keyboardView,

int keyBoardXmlResId) {

mActivity = ac;

mKeyboardView = keyboardView;

Keyboard mKeyboard = new Keyboard(mActivity, keyBoardXmlResId);

// Attach the keyboard to the view

mKeyboardView.setKeyboard(mKeyboard);

// Do not show the preview balloons

mKeyboardView.setPreviewEnabled(false);

KeyboardView.OnKeyboardActionListener keyboardListener = new KeyboardView.OnKeyboardActionListener() {

@Override

public void onKey(int primaryCode, int[] keyCodes) {

// Get the EditText and its Editable

View focusCurrent = mActivity.getWindow().getCurrentFocus();

if (focusCurrent == null || !(focusCurrent instanceof EditText)) {

return;

}

EditText edittext = (EditText) focusCurrent;

Editable editable = edittext.getText();

int start = edittext.getSelectionStart();

// Handle key

if (primaryCode == Constant.CodeCancel) {

hideCustomKeyboard();

} else if (primaryCode == Constant.CodeDelete) {

if (editable != null && start > 0) {

editable.delete(start - 1, start);

}

} else {

// Insert character

editable.insert(start,

Character.toString((char) primaryCode));

}

}

@Override

public void onPress(int arg0) {

}

@Override

public void onRelease(int primaryCode) {

}

@Override

public void onText(CharSequence text) {

}

@Override

public void swipeDown() {

}

@Override

public void swipeLeft() {

}

@Override

public void swipeRight() {

}

@Override

public void swipeUp() {

}

};

mKeyboardView.setOnKeyboardActionListener(keyboardListener);

}

// 绑定一个EditText

public void registerEditText(EditText editText) {

// Make the custom keyboard appear

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {

@Override

public void onFocusChange(View v, boolean hasFocus) {

if (hasFocus) {

showCustomKeyboard(v);

} else {

hideCustomKeyboard();

}

}

});

editText.setOnClickListener(new View.OnClickListener() {

@Override

public void onClic *《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》开源 Android开源项目《ali1024.coding.net/public/P7/Android/git》 * k(View v) {

Log.d(TAG, “onClick”);

showCustomKeyboard(v);

}

});

editText.setOnTouchListener(new View.OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

Log.d(TAG, “onTouch”);

EditText edittext = (EditText) v;

int inType = edittext.getInputType(); // Backup the input type

edittext.setInputType(InputType.TYPE_NULL); // Disable standard

// keyboard

edittext.onTouchEvent(event); // Call native handler

edittext.setInputType(inType); // Restore input type

edittext.setSelection(edittext.getText().length());

return true;

}

});

}

public void hideCustomKeyboard() {

mKeyboardView.setVisibility(View.GONE);

mKeyboardView.setEnabled(false);

}

public void showCustomKeyboard(View v) {

mKeyboardView.setVisibility(View.VISIBLE);

mKeyboardView.setEnabled(true);

if (v != null) {

((InputMethodManager) mActivity

.getSystemService(Activity.INPUT_METHOD_SERVICE))

.hideSoftInputFromWindow(v.getWindowToken(), 0);

}

}

public boolean isCustomKeyboardVisible() {

return mKeyboardView.getVisibility() == View.VISIBLE;

}

}

Update:随机布局

最后是今天给大家分享的一些独家干货:

【Android开发核心知识点笔记】

【Android思维脑图(技能树)】

【Android核心高级技术PDF文档,BAT大厂面试真题解析】

【Android高级架构视频学习资源】
lity() == View.VISIBLE;

}

}

Update:随机布局

最后是今天给大家分享的一些独家干货:

【Android开发核心知识点笔记】

[外链图片转存中…(img-7BHko55T-1650169450528)]

【Android思维脑图(技能树)】

[外链图片转存中…(img-ff6owmBs-1650169450529)]

【Android核心高级技术PDF文档,BAT大厂面试真题解析】

[外链图片转存中…(img-BZQHbeZw-1650169450530)]

【Android高级架构视频学习资源】

举报

相关推荐

0 条评论