Browse Source

[feat]键盘插件,增加拼音键盘组件,但未实现,只是占位和实现切换。2)将图片转为webp格式

hezihao 1 year ago
parent
commit
f8fac721a1
56 changed files with 277 additions and 78 deletions
  1. 9 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/IPinyinKeyboardComponent.kt
  2. 11 9
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/AiKeyboardComponent.kt
  3. 12 3
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/KeyBoardContainerComponent.kt
  4. 27 10
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/KeyboardSelectComponent.kt
  5. 46 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/PinyinKeyboardComponent.kt
  6. 2 2
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/QuickSwitchComponent.kt
  7. 3 1
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/SettingComponent.kt
  8. 39 1
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/ToolBarComponent.kt
  9. 16 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/enums/KeyboardGlobalType.kt
  10. 21 7
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/mvvm/viewmodel/KeyboardViewModel.kt
  11. 23 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/livedata/DistinctMutableLiveData.java
  12. 3 7
      plugins/keyboard_android/android/src/main/res/layout/component_key_board_container.xml
  13. 42 36
      plugins/keyboard_android/android/src/main/res/layout/component_keyboard_select.xml
  14. 15 0
      plugins/keyboard_android/android/src/main/res/layout/component_pinyin_keyboard.xml
  15. 2 2
      plugins/keyboard_android/android/src/main/res/layout/component_tool_bar.xml
  16. 6 0
      plugins/keyboard_android/android/src/main/res/layout/keyboard_layout.xml
  17. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/bg_action_btn_1.png
  18. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/bg_action_btn_1.webp
  19. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/bg_action_btn_2.png
  20. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/bg_action_btn_2.webp
  21. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/bg_love.png
  22. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/bg_love.webp
  23. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_arrow.png
  24. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_arrow.webp
  25. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_arrow_btn.png
  26. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_arrow_btn.webp
  27. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_back_btn2.png
  28. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_back_btn2.webp
  29. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_clear_input.png
  30. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_clear_input.webp
  31. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_common_keyboard_icon.png
  32. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_common_keyboard_icon.webp
  33. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_custom.png
  34. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_custom.webp
  35. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_dialog_close.png
  36. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_dialog_close.webp
  37. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_keyboard.png
  38. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_keyboard.webp
  39. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_keyboard_default_icon.png
  40. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_keyboard_default_icon.webp
  41. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_keyboard_icon.png
  42. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_keyboard_icon.webp
  43. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_market.png
  44. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_market.webp
  45. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_paste.png
  46. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_paste.webp
  47. 0 0
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_pinyin_btn_normal.webp
  48. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_pinyin_btn_selected.webp
  49. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_quick_switch_checked.png
  50. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_quick_switch_checked.webp
  51. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_quick_switch_normal.png
  52. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_quick_switch_normal.webp
  53. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_switch.png
  54. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_switch.webp
  55. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_vip.png
  56. BIN
      plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_vip.webp

+ 9 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/IPinyinKeyboardComponent.kt

@@ -0,0 +1,9 @@
+package com.atmob.keyboard_android.component.child
+
+import com.atmob.keyboard_android.component.base.IUIComponent
+
+/**
+ * 拼音键盘接口
+ */
+interface IPinyinKeyboardComponent : IUIComponent {
+}

+ 11 - 9
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/AiKeyboardComponent.kt

@@ -11,6 +11,7 @@ import com.atmob.keyboard_android.component.base.BaseUIComponent
 import com.atmob.keyboard_android.component.child.IAiKeyboardComponent
 import com.atmob.keyboard_android.component.item.AiKeyboardKeyViewBinder
 import com.atmob.keyboard_android.enums.HelpMode
+import com.atmob.keyboard_android.enums.KeyboardGlobalType
 import com.atmob.keyboard_android.enums.Tab
 import com.atmob.keyboard_android.ext.click
 import com.atmob.keyboard_android.ext.setGone
@@ -225,8 +226,17 @@ class AiKeyboardComponent @JvmOverloads constructor(
      */
     private fun setupViewModel() {
         KeyboardHolder.getKeyboardService()?.run {
-            // 监听模式更新,切换键盘
+            // 监听键盘类型切换
+            getKeyboardViewModel().keyboardGlobalType.observe(getLifecycleOwner()) { globalKeyboardType ->
+                if (KeyboardGlobalType.AI_KEYBOARD == globalKeyboardType) {
+                    show()
+                } else {
+                    hide()
+                }
+            }
+            // 监听帮助模式更新,切换键盘
             getKeyboardViewModel().helpMode.observe(getLifecycleOwner()) { newMode ->
+                // 切换键盘
                 updateKeyboardByHelpMode(newMode)
             }
             // 监听Tab切换,更新键盘列表
@@ -248,14 +258,6 @@ class AiKeyboardComponent @JvmOverloads constructor(
                     vKeyList.setVisible()
                 }
             }
-            // 监听键盘选择页,是否显示
-            getKeyboardViewModel().keyboardSelectPageShowing.observe(getLifecycleOwner()) { isShowing ->
-                if (isShowing) {
-                    vKeyboardKeyContent.setGone()
-                } else {
-                    vKeyboardKeyContent.setVisible()
-                }
-            }
         }
     }
 

+ 12 - 3
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/KeyBoardContainerComponent.kt

@@ -28,11 +28,20 @@ class KeyBoardContainerComponent @JvmOverloads constructor(
     }
 
     override fun bindView(view: View) {
-        // 监听设置页是否打开,打开时,隐藏键盘内容
         KeyboardHolder.getKeyboardService()?.run {
             getKeyboardViewModel().let {
-                it.settingPageShowing.observe(getLifecycleOwner()) { isShowSettingPage ->
-                    if (isShowSettingPage) {
+                // 监听设置页是否打开,打开时,隐藏键盘内容
+                it.settingPageShowing.observe(getLifecycleOwner()) { isShowing ->
+                    if (isShowing) {
+                        vKeyboardContent.setGone()
+                    } else {
+                        // TODO: hezihao,这里显示键盘内容有问题,还需要判断其他页是否展示
+                        vKeyboardContent.setVisible()
+                    }
+                }
+                // 监听设置页是否打开,打开时,隐藏键盘内容
+                it.keyboardSelectPageShowing.observe(getLifecycleOwner()) { isShowing ->
+                    if (isShowing) {
                         vKeyboardContent.setGone()
                     } else {
                         vKeyboardContent.setVisible()

+ 27 - 10
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/KeyboardSelectComponent.kt

@@ -53,14 +53,14 @@ class KeyboardSelectComponent @JvmOverloads constructor(
                 ?.updateKeyboardSelectPageShowing(false)
         }
         vSaveBtn.click {
-            val selectRole =
+            val selectKeyboard =
                 mListItems.filterIsInstance<KeyboardSelectModel>().find { it.isSelected }
-            if (selectRole == null) {
+            if (selectKeyboard == null) {
                 return@click
             }
-            // 保存,用户选择的人设
+            // 保存,用户选择的键盘
             KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
-                ?.updateRoleType(selectRole.name)
+                ?.updateKeyboardType(selectKeyboard.name)
             // 关闭选择器
             KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
                 ?.updateKeyboardSelectPageShowing(false)
@@ -110,11 +110,28 @@ class KeyboardSelectComponent @JvmOverloads constructor(
      */
     private fun setupViewModel() {
         KeyboardHolder.getKeyboardService()?.run {
-            getKeyboardViewModel().keyboardSelectPageShowing.observe(getLifecycleOwner()) { isShowing ->
-                if (isShowing) {
-                    show()
-                } else {
-                    hide()
+            getKeyboardViewModel().run {
+                // 处理显示和关闭
+                keyboardSelectPageShowing.observe(getLifecycleOwner()) { isShowing ->
+                    if (isShowing) {
+                        show()
+                    } else {
+                        hide()
+                    }
+                }
+                // 监听帮助模式切换时,关闭掉选择页
+                helpMode.observe(getLifecycleOwner()) {
+                    if (keyboardSelectPageShowing.value == true) {
+                        hide()
+                    }
+                }
+                // 设置页打开,则关闭掉选择页
+                settingPageShowing.observe(getLifecycleOwner()) { isShowing ->
+                    if (isShowing) {
+                        if (keyboardSelectPageShowing.value == true) {
+                            updateKeyboardSelectPageShowing(false)
+                        }
+                    }
                 }
             }
         }
@@ -122,7 +139,7 @@ class KeyboardSelectComponent @JvmOverloads constructor(
 
     @SuppressLint("NotifyDataSetChanged")
     private fun setData() {
-        // TODO: 加载键盘列表
+        // TODO: hezihao,加载键盘列表
         val emptyPlaceholderItemHeight = ConvertUtils.dp2px(60f - 16f)
         mListItems.apply {
             // 添加空占位条目

+ 46 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/PinyinKeyboardComponent.kt

@@ -0,0 +1,46 @@
+package com.atmob.keyboard_android.component.child.impl
+
+import android.content.Context
+import android.util.AttributeSet
+import android.view.View
+import com.atmob.keyboard_android.R
+import com.atmob.keyboard_android.component.base.BaseUIComponent
+import com.atmob.keyboard_android.component.child.IPinyinKeyboardComponent
+import com.atmob.keyboard_android.enums.KeyboardGlobalType
+import com.atmob.keyboard_android.util.KeyboardHolder
+
+/**
+ * 拼音键盘组件
+ */
+class PinyinKeyboardComponent @JvmOverloads constructor(
+    context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
+) : BaseUIComponent<IPinyinKeyboardComponent>(context, attrs, defStyleAttr),
+    IPinyinKeyboardComponent {
+    override fun onInflateViewId(): Int {
+        return R.layout.component_pinyin_keyboard
+    }
+
+    override fun findView(view: View) {
+    }
+
+    override fun bindView(view: View) {
+        setupViewModel()
+    }
+
+    private fun setupViewModel() {
+        KeyboardHolder.getKeyboardService()?.run {
+            // 监听键盘类型切换
+            getKeyboardViewModel().keyboardGlobalType.observe(getLifecycleOwner()) { globalKeyboardType ->
+                if (KeyboardGlobalType.PINYIN_KEYBOARD == globalKeyboardType) {
+                    show()
+                } else {
+                    hide()
+                }
+            }
+        }
+    }
+
+    override fun getComponentInterfaceClazz(): Class<IPinyinKeyboardComponent> {
+        return IPinyinKeyboardComponent::class.java
+    }
+}

+ 2 - 2
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/QuickSwitchComponent.kt

@@ -73,8 +73,8 @@ class QuickSwitchComponent @JvmOverloads constructor(
             getKeyboardViewModel().helpMode.observe(getLifecycleOwner()) { newMode ->
                 vModeText.text = newMode.modeName
             }
-            // 监听人设切换
-            getKeyboardViewModel().roleType.observe(getLifecycleOwner()) { newRoleType ->
+            // 监听键盘类型切换
+            getKeyboardViewModel().keyboardType.observe(getLifecycleOwner()) { newRoleType ->
                 vRoleType.text = newRoleType
             }
         }

+ 3 - 1
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/SettingComponent.kt

@@ -67,7 +67,9 @@ class SettingComponent @JvmOverloads constructor(
             // 如果键盘选择页打开,则关闭设置页
             getKeyboardViewModel().keyboardSelectPageShowing.observe(getLifecycleOwner()) { isShowing ->
                 if (isShowing) {
-                    getKeyboardViewModel().updateSettingPageShowing(false)
+                    if (getKeyboardViewModel().settingPageShowing.value == true) {
+                        getKeyboardViewModel().updateSettingPageShowing(false)
+                    }
                 }
             }
         }

+ 39 - 1
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/ToolBarComponent.kt

@@ -3,11 +3,14 @@ package com.atmob.keyboard_android.component.child.impl
 import android.content.Context
 import android.util.AttributeSet
 import android.view.View
+import android.widget.ImageView
 import com.atmob.keyboard_android.R
 import com.atmob.keyboard_android.component.base.BaseUIComponent
 import com.atmob.keyboard_android.component.child.IToolBarComponent
+import com.atmob.keyboard_android.enums.KeyboardGlobalType
 import com.atmob.keyboard_android.ext.click
 import com.atmob.keyboard_android.ext.longClick
+import com.atmob.keyboard_android.ext.setGone
 import com.atmob.keyboard_android.keyboard.InputMethodPickerActivity
 import com.atmob.keyboard_android.util.KeyboardHolder
 
@@ -18,6 +21,7 @@ class ToolBarComponent @JvmOverloads constructor(
     context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
 ) : BaseUIComponent<IToolBarComponent>(context, attrs, defStyleAttr), IToolBarComponent {
     private lateinit var vIcon: View
+    private lateinit var vPinyinSwitchBtn: ImageView
     private lateinit var vKeyboardSwitchBtn: View
     private lateinit var vIntimacyLayout: View
 
@@ -27,18 +31,36 @@ class ToolBarComponent @JvmOverloads constructor(
 
     override fun findView(view: View) {
         vIcon = view.findViewById(R.id.icon)
+        vPinyinSwitchBtn = view.findViewById(R.id.pinyin_switch_btn)
         vKeyboardSwitchBtn = view.findViewById(R.id.keyboard_switch_btn)
         vIntimacyLayout = view.findViewById(R.id.intimacy_layout)
     }
 
     override fun bindView(view: View) {
+        // TODO: hezihao,拼音键盘还没实现,先隐藏切换入口
+        vPinyinSwitchBtn.setGone()
+
         vIcon.click {
             // 切换到设置页
             KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
                 ?.updateSettingPageShowing(true)
         }
+        vPinyinSwitchBtn.click {
+            // 切换拼音键盘或AI键盘
+            KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()?.run {
+                // 当前为Ai键盘,则切换为拼音键盘
+                val newGlobalType =
+                    if (keyboardGlobalType.value == KeyboardGlobalType.AI_KEYBOARD) {
+                        KeyboardGlobalType.PINYIN_KEYBOARD
+                    } else {
+                        // 当前为拼音键盘,则切换为Ai键盘
+                        KeyboardGlobalType.AI_KEYBOARD
+                    }
+                updateKeyboardGlobalType(newGlobalType)
+            }
+        }
+        // TODO: hezhiao,测试显示vip页,记得要去掉
         vIcon.longClick {
-            // TODO: hezhiao,测试显示vip页
             KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
                 ?.updateVipPageShowing(true)
             true
@@ -52,6 +74,22 @@ class ToolBarComponent @JvmOverloads constructor(
             KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
                 ?.updateLoginPageShowing(true)
         }
+
+        setupViewModel()
+    }
+
+    private fun setupViewModel() {
+        KeyboardHolder.getKeyboardService()?.run {
+            // 监听全局键盘类型变化,切换拼音切换图标
+            getKeyboardViewModel().keyboardGlobalType.observe(getLifecycleOwner()) { currentGlobalType ->
+                val switchIconResId = if (currentGlobalType == KeyboardGlobalType.PINYIN_KEYBOARD) {
+                    R.mipmap.ic_pinyin_btn_selected
+                } else {
+                    R.mipmap.ic_pinyin_btn_normal
+                }
+                vPinyinSwitchBtn.setImageResource(switchIconResId)
+            }
+        }
     }
 
     override fun getComponentInterfaceClazz(): Class<IToolBarComponent> {

+ 16 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/enums/KeyboardGlobalType.kt

@@ -0,0 +1,16 @@
+package com.atmob.keyboard_android.enums
+
+/**
+ * 键盘全局类型
+ */
+enum class KeyboardGlobalType {
+    /**
+     * Ai键盘
+     */
+    AI_KEYBOARD,
+
+    /**
+     * 拼音键盘
+     */
+    PINYIN_KEYBOARD,
+}

+ 21 - 7
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/mvvm/viewmodel/KeyboardViewModel.kt

@@ -5,6 +5,7 @@ import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.ViewModel
 import com.atmob.keyboard_android.R
 import com.atmob.keyboard_android.enums.HelpMode
+import com.atmob.keyboard_android.enums.KeyboardGlobalType
 import com.atmob.keyboard_android.enums.Tab
 import com.atmob.keyboard_android.util.ContextUtil
 
@@ -33,7 +34,7 @@ class KeyboardViewModel : ViewModel() {
     val vipPageShowing: LiveData<Boolean> = _vipPageShowing
 
     /**
-     * 键盘选择页(人设列表),是否显示
+     * 键盘选择页,是否显示
      */
     private val _keyboardSelectPageShowing = MutableLiveData(false)
     val keyboardSelectPageShowing: LiveData<Boolean> = _keyboardSelectPageShowing
@@ -51,12 +52,18 @@ class KeyboardViewModel : ViewModel() {
     val helpMode: LiveData<HelpMode> = _helpMode
 
     /**
-     * 人设类型
+     * 全局键盘类型
+     */
+    private val _keyboardGlobalType = MutableLiveData(KeyboardGlobalType.AI_KEYBOARD)
+    val keyboardGlobalType: LiveData<KeyboardGlobalType> = _keyboardGlobalType
+
+    /**
+     * 键盘类型
      */
     // TODO: hezihao,这里要改成具体的实体类,要到数据对接时,定义数据结构
-    private val _roleType =
+    private val _keyboardType =
         MutableLiveData(ContextUtil.getContext().resources.getString(R.string.common_keyboard))
-    val roleType: LiveData<String> = _roleType
+    val keyboardType: LiveData<String> = _keyboardType
 
     /**
      * Tab类型
@@ -115,10 +122,17 @@ class KeyboardViewModel : ViewModel() {
     }
 
     /**
-     * 更新人设类型
+     * 更新全局键盘类型
+     */
+    fun updateKeyboardGlobalType(keyboardGlobalType: KeyboardGlobalType) {
+        this._keyboardGlobalType.value = keyboardGlobalType
+    }
+
+    /**
+     * 更新键盘类型
      */
-    fun updateRoleType(roleType: String) {
-        _roleType.value = roleType
+    fun updateKeyboardType(keyboardType: String) {
+        _keyboardType.value = keyboardType
     }
 
     /**

+ 23 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/livedata/DistinctMutableLiveData.java

@@ -0,0 +1,23 @@
+package com.atmob.keyboard_android.util.livedata;
+
+import androidx.lifecycle.MutableLiveData;
+
+import java.util.Objects;
+
+/**
+ * 带去重功能的LiveData,如果新值和当前值一致时,不会触发观察者
+ */
+public class DistinctMutableLiveData<T> extends MutableLiveData<T> {
+    public DistinctMutableLiveData(T value) {
+        super(value);
+    }
+
+    @Override
+    public void setValue(T value) {
+        T currentValue = getValue();
+        if (Objects.equals(currentValue, value)) {
+            return;
+        }
+        super.setValue(value);
+    }
+}

+ 3 - 7
plugins/keyboard_android/android/src/main/res/layout/component_key_board_container.xml

@@ -20,17 +20,13 @@
         android:layout_weight="1">
 
         <!-- 拼音键盘 -->
+        <com.atmob.keyboard_android.component.child.impl.PinyinKeyboardComponent
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" />
 
         <!-- AI键盘 -->
         <com.atmob.keyboard_android.component.child.impl.AiKeyboardComponent
             android:layout_width="match_parent"
             android:layout_height="match_parent" />
-
-        <!-- 键盘选择页 -->
-        <com.atmob.keyboard_android.component.child.impl.KeyboardSelectComponent
-            android:id="@+id/keyboard_select_component"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:visibility="gone" />
     </FrameLayout>
 </LinearLayout>

+ 42 - 36
plugins/keyboard_android/android/src/main/res/layout/component_keyboard_select.xml

@@ -1,45 +1,51 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
-    android:layout_height="@dimen/keyboard_content_height"
-    android:clickable="true"
+    android:layout_height="@dimen/keyboard_height"
     tools:background="@mipmap/bg_keyboard">
 
-    <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/list"
+    <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:paddingStart="12dp"
-        android:paddingEnd="12dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
+        android:layout_height="match_parent"
+        android:layout_marginTop="65dp"
+        android:clickable="true">
 
-    <ImageView
-        android:id="@+id/back_btn"
-        android:layout_width="32dp"
-        android:layout_height="32dp"
-        android:layout_marginStart="12dp"
-        android:src="@mipmap/ic_back_btn"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/list"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:paddingStart="12dp"
+            android:paddingEnd="12dp"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
 
-    <TextView
-        android:id="@+id/save_btn"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="70dp"
-        android:layout_marginEnd="70dp"
-        android:layout_marginBottom="16dp"
-        android:background="@drawable/bg_gradient"
-        android:gravity="center"
-        android:paddingTop="12dp"
-        android:paddingBottom="12dp"
-        android:text="@string/save"
-        android:textColor="@color/text_color_white"
-        android:textSize="14sp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent" />
-</androidx.constraintlayout.widget.ConstraintLayout>
+        <ImageView
+            android:id="@+id/back_btn"
+            android:layout_width="32dp"
+            android:layout_height="32dp"
+            android:layout_marginStart="12dp"
+            android:src="@mipmap/ic_back_btn"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:id="@+id/save_btn"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="70dp"
+            android:layout_marginEnd="70dp"
+            android:layout_marginBottom="16dp"
+            android:background="@drawable/bg_gradient"
+            android:gravity="center"
+            android:paddingTop="12dp"
+            android:paddingBottom="12dp"
+            android:text="@string/save"
+            android:textColor="@color/text_color_white"
+            android:textSize="14sp"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</FrameLayout>

+ 15 - 0
plugins/keyboard_android/android/src/main/res/layout/component_pinyin_keyboard.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="@dimen/keyboard_content_height"
+    android:orientation="vertical"
+    tools:background="@mipmap/bg_keyboard"
+    tools:layout_height="wrap_content">
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:text="Test" />
+</FrameLayout>

+ 2 - 2
plugins/keyboard_android/android/src/main/res/layout/component_tool_bar.xml

@@ -46,8 +46,8 @@
             android:id="@+id/pinyin_switch_btn"
             android:layout_width="34dp"
             android:layout_height="34dp"
-            android:src="@mipmap/ic_pinyin_btn"
-            android:visibility="gone" />
+            android:src="@mipmap/ic_pinyin_btn_normal"
+            tools:visibility="visible" />
 
         <ImageView
             android:id="@+id/keyboard_switch_btn"

+ 6 - 0
plugins/keyboard_android/android/src/main/res/layout/keyboard_layout.xml

@@ -9,6 +9,12 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
 
+    <!-- 键盘选择页 -->
+    <com.atmob.keyboard_android.component.child.impl.KeyboardSelectComponent
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:visibility="gone" />
+
     <!-- 设置组件 -->
     <com.atmob.keyboard_android.component.child.impl.SettingComponent
         android:layout_width="match_parent"

BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/bg_action_btn_1.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/bg_action_btn_1.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/bg_action_btn_2.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/bg_action_btn_2.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/bg_love.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/bg_love.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_arrow.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_arrow.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_arrow_btn.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_arrow_btn.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_back_btn2.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_back_btn2.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_clear_input.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_clear_input.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_common_keyboard_icon.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_common_keyboard_icon.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_custom.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_custom.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_dialog_close.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_dialog_close.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_keyboard.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_keyboard.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_keyboard_default_icon.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_keyboard_default_icon.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_keyboard_icon.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_keyboard_icon.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_market.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_market.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_paste.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_paste.webp


plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_pinyin_btn.webp → plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_pinyin_btn_normal.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_pinyin_btn_selected.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_quick_switch_checked.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_quick_switch_checked.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_quick_switch_normal.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_quick_switch_normal.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_switch.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_switch.webp


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_vip.png


BIN
plugins/keyboard_android/android/src/main/res/mipmap-xxxhdpi/ic_vip.webp