|
|
@@ -9,16 +9,21 @@ import java.util.concurrent.CopyOnWriteArrayList
|
|
|
|
|
|
|
|
|
/**
|
|
|
- * 键盘监听器
|
|
|
+ * 默认键盘切换监听器
|
|
|
*/
|
|
|
@SuppressLint("StaticFieldLeak")
|
|
|
-object KeyboardWatcher {
|
|
|
+object DefaultKeyboardWatcher {
|
|
|
+ /**
|
|
|
+ * 是否初始化了
|
|
|
+ */
|
|
|
+ private var isInited = false
|
|
|
+
|
|
|
private val mContext = ContextUtil.getContext()
|
|
|
|
|
|
/**
|
|
|
* 监听器列表
|
|
|
*/
|
|
|
- private val mListenerList = CopyOnWriteArrayList<OnKeyboardChangeListener>()
|
|
|
+ private val mListenerList = CopyOnWriteArrayList<OnDefaultKeyboardChangeListener>()
|
|
|
|
|
|
/**
|
|
|
* 初始化,注册监听
|
|
|
@@ -26,6 +31,7 @@ object KeyboardWatcher {
|
|
|
fun init() {
|
|
|
val filter = IntentFilter(Intent.ACTION_INPUT_METHOD_CHANGED)
|
|
|
mContext.registerReceiver(mImeChangeReceiver, filter)
|
|
|
+ isInited = true
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -33,13 +39,26 @@ object KeyboardWatcher {
|
|
|
*/
|
|
|
fun unInit() {
|
|
|
mContext.unregisterReceiver(mImeChangeReceiver)
|
|
|
+ isInited = false
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 是否初始化了
|
|
|
+ */
|
|
|
+ fun isInited(): Boolean {
|
|
|
+ return isInited
|
|
|
}
|
|
|
|
|
|
- interface OnKeyboardChangeListener {
|
|
|
+ interface OnDefaultKeyboardChangeListener {
|
|
|
/**
|
|
|
- * 当前键盘,被设置为默认键盘
|
|
|
+ * 当前键盘,被设置为默认键盘时回调
|
|
|
*/
|
|
|
fun onDefaultKeyboard()
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 当前键盘,非默认键盘时回调
|
|
|
+ */
|
|
|
+ fun onNotDefaultKeyboard()
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -48,10 +67,16 @@ object KeyboardWatcher {
|
|
|
private val mImeChangeReceiver: BroadcastReceiver = object : BroadcastReceiver() {
|
|
|
override fun onReceive(context: Context?, intent: Intent) {
|
|
|
if (Intent.ACTION_INPUT_METHOD_CHANGED == intent.action) {
|
|
|
+ // 当前键盘,被设置为默认键盘
|
|
|
if (InputMethodUtil.isDefaultKeyboard(mContext)) {
|
|
|
for (listener in mListenerList) {
|
|
|
listener.onDefaultKeyboard()
|
|
|
}
|
|
|
+ } else {
|
|
|
+ // 当前键盘,非默认键盘
|
|
|
+ for (listener in mListenerList) {
|
|
|
+ listener.onNotDefaultKeyboard()
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -60,7 +85,7 @@ object KeyboardWatcher {
|
|
|
/**
|
|
|
* 注册监听器
|
|
|
*/
|
|
|
- fun registerListener(listener: OnKeyboardChangeListener) {
|
|
|
+ fun registerListener(listener: OnDefaultKeyboardChangeListener) {
|
|
|
if (!mListenerList.contains(listener)) {
|
|
|
mListenerList.add(listener)
|
|
|
}
|
|
|
@@ -69,7 +94,7 @@ object KeyboardWatcher {
|
|
|
/**
|
|
|
*
|
|
|
*/
|
|
|
- fun unRegisterListener(listener: OnKeyboardChangeListener) {
|
|
|
+ fun unRegisterListener(listener: OnDefaultKeyboardChangeListener) {
|
|
|
mListenerList.remove(listener);
|
|
|
}
|
|
|
}
|