pop menu布局调整油化

This commit is contained in:
renhaoting 2025-10-23 17:03:01 +08:00
parent 7459af2f0a
commit 89eb7a13fa
3 changed files with 44 additions and 17 deletions

View File

@ -19,17 +19,11 @@ class InputPanel @JvmOverloads constructor(context: Context, attrs: AttributeSet
binding = inflate(ChatInputpanelBinding::inflate)
binding?.run {
chatPopMenu.setMenuList(mutableListOf(
PopMenuIconView.MenuItem(R.mipmap.ic_launcher) {
Toast.makeText(context, "首页", Toast.LENGTH_SHORT).show()
PopMenuIconView.MenuItem(R.mipmap.chat_ai_talk) {
Toast.makeText(context, "聊天", Toast.LENGTH_SHORT).show()
},
PopMenuIconView.MenuItem(R.mipmap.ic_launcher) {
Toast.makeText(context, "设置", Toast.LENGTH_SHORT).show()
},
PopMenuIconView.MenuItem(R.mipmap.ic_launcher) {
Toast.makeText(context, "分享", Toast.LENGTH_SHORT).show()
},
PopMenuIconView.MenuItem(R.mipmap.ic_launcher) {
Toast.makeText(context, "收藏", Toast.LENGTH_SHORT).show()
PopMenuIconView.MenuItem(R.mipmap.chat_ai_phone) {
Toast.makeText(context, "通话", Toast.LENGTH_SHORT).show()
}
))
}

View File

@ -1,6 +1,7 @@
package com.remax.visualnovel.ui.Chat
import android.animation.Animator
import android.animation.AnimatorSet
import android.animation.ValueAnimator
import android.content.Context
@ -29,7 +30,7 @@ class PopMenuIconView @JvmOverloads constructor(
)
private val mMenuItemList = mutableListOf<MenuItem>()
private var isMenuShowing = true
private var isMenuShowing = false
private var itemSpacing = 0
private var itemSize = 0
@ -62,7 +63,7 @@ class PopMenuIconView @JvmOverloads constructor(
setImageResource(menuItem.iconResId)
layoutParams = LinearLayout.LayoutParams(itemSize, itemSize).apply {
if (index < mMenuItemList.size - 1) {
if (/*index < mMenuItemList.size - 1*/true) {
bottomMargin = itemSpacing
}
}
@ -72,7 +73,7 @@ class PopMenuIconView @JvmOverloads constructor(
dismissMenu()
}
mBinding!!.llMenuContainer.addView(this)
mBinding!!.llMenuContainer.addView(this, 0)
}
}
}
@ -86,6 +87,7 @@ class PopMenuIconView @JvmOverloads constructor(
isMenuShowing = true
mBinding?.run {
divider.visibility = VISIBLE
llMenuContainer.visibility = VISIBLE
ivTrigger.setImageResource(R.mipmap.chat_down)
@ -131,6 +133,25 @@ class PopMenuIconView @JvmOverloads constructor(
duration = 300
interpolator = DecelerateInterpolator()
playTogether(valueYAnim)
addListener(object: Animator.AnimatorListener{
override fun onAnimationCancel(animation: Animator) {
llMenuContainer.visibility = GONE
divider.visibility = GONE
}
override fun onAnimationEnd(animation: Animator) {
llMenuContainer.visibility = GONE
divider.visibility = GONE
}
override fun onAnimationRepeat(animation: Animator) {
}
override fun onAnimationStart(animation: Animator) {
}
})
start()
}
}

View File

@ -2,13 +2,13 @@
<com.remax.visualnovel.widget.uitoken.view.UITokenLinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_width="@dimen/dp_44"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
app:radiusToken="@string/radius_pill"
android:paddingVertical="@dimen/dp_7"
app:backgroundColorToken="@string/color_surface_element_normal"
android:padding="@dimen/dp_14"
>
<LinearLayout
android:id="@+id/ll_menu_container"
@ -17,13 +17,25 @@
android:orientation="vertical"
android:gravity="center_horizontal"
android:layout_gravity="bottom|center_horizontal"
android:layout_marginBottom="@dimen/dp_20">
android:visibility="gone"
>
</LinearLayout>
<View
android:id="@+id/divider"
android:layout_width="@dimen/dp_10"
android:layout_height="@dimen/dp_1"
android:background="@color/white_p70"
android:layout_marginBottom="@dimen/dp_14"
android:visibility="gone"
/>
<com.remax.visualnovel.widget.uitoken.view.UITokenImageView
android:id="@+id/iv_trigger"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@mipmap/chat_up"
android:layout_gravity="center_horizontal"
android:paddingVertical="@dimen/dp_7"
/>
</com.remax.visualnovel.widget.uitoken.view.UITokenLinearLayout>