Prechádzať zdrojové kódy

[feat]键盘插件,Ai键盘,增加添加人设按键条目

hezihao 8 mesiacov pred
rodič
commit
b595048d81

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

@@ -11,17 +11,20 @@ import com.atmob.keyboard_android.component.base.FakeComponent
 import com.atmob.keyboard_android.component.base.RouteComponent
 import com.atmob.keyboard_android.component.child.IAiChatComponent
 import com.atmob.keyboard_android.component.child.IAiKeyboardCommonPanelComponent
+import com.atmob.keyboard_android.component.item.AddCharacterViewBinder
 import com.atmob.keyboard_android.component.item.AiKeyboardKeyViewBinder
 import com.atmob.keyboard_android.constant.Constants
 import com.atmob.keyboard_android.enums.HelpMode
 import com.atmob.keyboard_android.ext.click
 import com.atmob.keyboard_android.ext.setGone
 import com.atmob.keyboard_android.ext.setVisible
+import com.atmob.keyboard_android.model.AddCharacterModel
 import com.atmob.keyboard_android.model.AiKeyboardKeyModel
 import com.atmob.keyboard_android.util.InputMethodUtil
 import com.atmob.keyboard_android.util.KeyboardHolder
 import com.atmob.keyboard_android.util.LogUtil
 import com.atmob.keyboard_android.util.UserInfoHelper
+import com.atmob.keyboard_android.util.bridge.FlutterBridgeManager
 import com.atmob.keyboard_android.util.loading.WaitLoadingController
 import com.atmob.keyboard_android.util.recyclerview.GridDivider
 import com.atmob.keyboard_android.widget.LongTouchContainer
@@ -98,6 +101,7 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
         vKeyList.apply {
             mKeyListItems = Items()
             mKeyListAdapter = MultiTypeAdapter(mKeyListItems).apply {
+                // 键盘按键条目
                 register(AiKeyboardKeyModel::class.java, AiKeyboardKeyViewBinder {
                     // 点击键盘按键,打开AI生成内容面板
                     if (it.isVip) {
@@ -112,6 +116,10 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
                         LogUtil.d("Ai键盘,不需要VIP,直接进行下一步")
                     }
                 })
+                // 添加人设按键
+                register(AddCharacterModel::class.java, AddCharacterViewBinder {
+                    FlutterBridgeManager.jump2CharacterMarketPage()
+                })
             }
             // 水平分页布局管理器
             layoutManager = PagerGridLayoutManager(
@@ -256,7 +264,10 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
                         )
                     }
                     mKeyListItems.clear()
+                    // 添加按键列表
                     mKeyListItems.addAll(newList)
+                    // 添加人设按钮
+                    mKeyListItems.add(AddCharacterModel())
                     mKeyListAdapter.notifyDataSetChanged()
                 }, onFail = {
                     ToastUtils.showShort(it)

+ 38 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/item/AddCharacterViewBinder.kt

@@ -0,0 +1,38 @@
+package com.atmob.keyboard_android.component.item
+
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import com.atmob.keyboard_android.R
+import com.atmob.keyboard_android.ext.click
+import com.atmob.keyboard_android.model.AddCharacterModel
+import me.drakeet.multitype.ItemViewBinder
+
+/**
+ * 添加人设按键条目
+ */
+class AddCharacterViewBinder(
+    private val onItemClick: (item: AddCharacterModel) -> Unit
+) :
+    ItemViewBinder<AddCharacterModel, AddCharacterViewBinder.InnerViewHolder>() {
+    override fun onCreateViewHolder(
+        inflater: LayoutInflater,
+        parent: ViewGroup
+    ): InnerViewHolder {
+        return InnerViewHolder(inflater.inflate(R.layout.item_add_character, parent, false))
+    }
+
+    override fun onBindViewHolder(
+        holder: InnerViewHolder,
+        item: AddCharacterModel
+    ) {
+        holder.vAddLayout.click {
+            onItemClick.invoke(item)
+        }
+    }
+
+    inner class InnerViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+        val vAddLayout: View = itemView.findViewById(R.id.add_layout)
+    }
+}

+ 8 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/model/AddCharacterModel.kt

@@ -0,0 +1,8 @@
+package com.atmob.keyboard_android.model
+
+import java.io.Serializable
+
+/**
+ * 键盘-添加人设模型
+ */
+class AddCharacterModel : Serializable

+ 37 - 0
plugins/keyboard_android/android/src/main/res/layout/item_add_character.xml

@@ -0,0 +1,37 @@
+<?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="wrap_content"
+    tools:background="@android:color/holo_blue_dark">
+
+    <LinearLayout
+        android:id="@+id/add_layout"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@drawable/bg_ai_keyboard_key"
+        android:gravity="center"
+        android:orientation="horizontal">
+
+        <ImageView
+            android:layout_width="14dp"
+            android:layout_height="14dp"
+            android:layout_marginEnd="3dp"
+            android:src="@mipmap/ic_add" />
+
+        <TextView
+            android:id="@+id/add_btn"
+            android:layout_width="wrap_content"
+            android:layout_height="46dp"
+            android:layout_gravity="center"
+            android:ellipsize="end"
+            android:gravity="center"
+            android:maxLines="1"
+            android:paddingStart="3dp"
+            android:paddingEnd="3dp"
+            android:text="@string/add_character"
+            android:textColor="@color/text_color_brand"
+            android:textSize="12sp"
+            android:textStyle="bold" />
+    </LinearLayout>
+</FrameLayout>

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


+ 1 - 0
plugins/keyboard_android/android/src/main/res/values/string.xml

@@ -30,4 +30,5 @@
     <string name="promotion_relationship">关系升温</string>
     <string name="no_clipboard_data_tip">还没有复制内容喔</string>
     <string name="loading_tip">加载中…</string>
+    <string name="add_character">添加人设</string>
 </resources>