Explorar o código

[feat]键盘插件,抽取常量

hezihao hai 8 meses
pai
achega
0e7f5a2de2

+ 16 - 2
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/base/animator/impl/TransitionAnimator.kt

@@ -20,6 +20,11 @@ class TransitionAnimator : ComponentAnimator() {
      */
     private var isShow = false
 
+    /**
+     * 组件宽高
+     */
+    private var mComponentSize: Pair<Int, Int>? = null
+
     override fun show(onStart: (() -> Unit)?, onFinish: (() -> Unit)?) {
         if (isShow) {
             return
@@ -30,7 +35,7 @@ class TransitionAnimator : ComponentAnimator() {
         val uiComponent = getUIComponent()
         uiComponent?.asView()?.let { rootView ->
             // 先测量view后,才能获取到尺寸
-            measureView(rootView)
+            ensureInitComponentSize(rootView)
             mShowAnimator = ValueAnimator.ofFloat(rootView.measuredWidth.toFloat(), 0f).apply {
                 duration = 300
                 interpolator = AccelerateInterpolator()
@@ -66,7 +71,7 @@ class TransitionAnimator : ComponentAnimator() {
         val uiComponent = getUIComponent()
         uiComponent?.asView()?.let { rootView ->
             // 先测量view后,才能获取到尺寸
-            measureView(rootView)
+            ensureInitComponentSize(rootView)
             mHideAnimator = ValueAnimator.ofFloat(0f, rootView.measuredWidth.toFloat()).apply {
                 duration = 200
                 interpolator = AccelerateInterpolator()
@@ -91,4 +96,13 @@ class TransitionAnimator : ComponentAnimator() {
             mHideAnimator!!.start()
         }
     }
+
+    /**
+     * 确保测量了组件的大小
+     */
+    private fun ensureInitComponentSize(rootView: View) {
+        if (mComponentSize == null) {
+            mComponentSize = measureView(rootView)
+        }
+    }
 }

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

@@ -10,6 +10,7 @@ import com.atmob.keyboard_android.R
 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.constant.Constants
 import com.atmob.keyboard_android.enums.HelpMode
 import com.atmob.keyboard_android.enums.KeyboardGlobalType
 import com.atmob.keyboard_android.enums.Tab
@@ -164,8 +165,6 @@ class AiKeyboardComponent @JvmOverloads constructor(
      * 设置列表
      */
     private fun setupKeyList() {
-        // 列数
-        val spanCount = 3
         vKeyList.apply {
             mKeyListItems = Items()
             mKeyListAdapter = MultiTypeAdapter(mKeyListItems).apply {
@@ -175,10 +174,15 @@ class AiKeyboardComponent @JvmOverloads constructor(
                         ?.updateAiChatPageShowing(true)
                 })
             }
-            layoutManager = GridLayoutManager(context, spanCount)
+            layoutManager = GridLayoutManager(context, Constants.AI_KEYBOARD_KEY_LIST_SPAN_COUNT)
             adapter = mKeyListAdapter
             // 分割线
-            addItemDecoration(GridDivider(spanCount, ConvertUtils.dp2px(6f)))
+            addItemDecoration(
+                GridDivider(
+                    Constants.AI_KEYBOARD_KEY_LIST_SPAN_COUNT,
+                    ConvertUtils.dp2px(6f)
+                )
+            )
         }
     }
 

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

@@ -8,6 +8,7 @@ import androidx.recyclerview.widget.GridLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import com.atmob.keyboard_android.R
 import com.atmob.keyboard_android.component.base.BaseUIComponent
+import com.atmob.keyboard_android.component.base.animator.impl.TransitionAnimator
 import com.atmob.keyboard_android.component.child.IKeyboardSelectComponent
 import com.atmob.keyboard_android.component.item.EmptyPlaceholderViewBinder
 import com.atmob.keyboard_android.component.item.KeyboardSelectViewBinder
@@ -101,6 +102,14 @@ class KeyboardSelectComponent @JvmOverloads constructor(
         setData()
     }
 
+    override fun getComponentAnimator(): Class<*> {
+        return if (Constants.COMPONENT_ANIMATOR_ENABLE) {
+            TransitionAnimator::class.java
+        } else {
+            super.getComponentAnimator()
+        }
+    }
+
     override fun getComponentInterfaceClazz(): Class<IKeyboardSelectComponent> {
         return IKeyboardSelectComponent::class.java
     }

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

@@ -5,7 +5,9 @@ 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.base.animator.impl.TransitionAnimator
 import com.atmob.keyboard_android.component.child.ISettingComponent
+import com.atmob.keyboard_android.constant.Constants
 import com.atmob.keyboard_android.ext.click
 import com.atmob.keyboard_android.util.KeyboardHolder
 import com.blankj.utilcode.util.ToastUtils
@@ -75,6 +77,14 @@ class SettingComponent @JvmOverloads constructor(
         }
     }
 
+    override fun getComponentAnimator(): Class<*> {
+        return if (Constants.COMPONENT_ANIMATOR_ENABLE) {
+            TransitionAnimator::class.java
+        } else {
+            super.getComponentAnimator()
+        }
+    }
+
     override fun getComponentInterfaceClazz(): Class<ISettingComponent> {
         return ISettingComponent::class.java
     }

+ 10 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/page/impl/LoginPageComponent.kt

@@ -5,7 +5,9 @@ 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.base.animator.impl.TransitionAnimator
 import com.atmob.keyboard_android.component.page.ILoginPageComponent
+import com.atmob.keyboard_android.constant.Constants
 import com.atmob.keyboard_android.ext.click
 import com.atmob.keyboard_android.util.KeyboardHolder
 import com.blankj.utilcode.util.ToastUtils
@@ -54,6 +56,14 @@ class LoginPageComponent @JvmOverloads constructor(
         }
     }
 
+    override fun getComponentAnimator(): Class<*> {
+        return if (Constants.COMPONENT_ANIMATOR_ENABLE) {
+            TransitionAnimator::class.java
+        } else {
+            super.getComponentAnimator()
+        }
+    }
+
     override fun getComponentInterfaceClazz(): Class<ILoginPageComponent> {
         return ILoginPageComponent::class.java
     }

+ 10 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/page/impl/VipPageComponent.kt

@@ -5,7 +5,9 @@ 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.base.animator.impl.TransitionAnimator
 import com.atmob.keyboard_android.component.page.IVipPageComponent
+import com.atmob.keyboard_android.constant.Constants
 import com.atmob.keyboard_android.ext.click
 import com.atmob.keyboard_android.util.KeyboardHolder
 
@@ -52,6 +54,14 @@ class VipPageComponent @JvmOverloads constructor(
         }
     }
 
+    override fun getComponentAnimator(): Class<*> {
+        return if (Constants.COMPONENT_ANIMATOR_ENABLE) {
+            TransitionAnimator::class.java
+        } else {
+            super.getComponentAnimator()
+        }
+    }
+
     override fun getComponentInterfaceClazz(): Class<IVipPageComponent> {
         return IVipPageComponent::class.java
     }

+ 11 - 1
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/constant/Constants.kt

@@ -8,6 +8,16 @@ interface Constants {
         /**
          * 键盘选择,网格列数
          */
-        val KEYBOARD_SELECT_SPAN_COUNT: Int = 3
+        const val KEYBOARD_SELECT_SPAN_COUNT: Int = 3
+
+        /**
+         * Ai键盘,按键列表,网格列数
+         */
+        const val AI_KEYBOARD_KEY_LIST_SPAN_COUNT: Int = 3
+
+        /**
+         * 组件动画,是否开启
+         */
+        const val COMPONENT_ANIMATOR_ENABLE = false
     }
 }