返回

用XPopup框架,50行代码搞定抖音式炫酷评论弹窗

Android

引言

抖音作为当下风靡的短视频平台,其评论弹窗以炫酷的交互体验和流畅的动画效果著称。本文将以XPopup框架为基础,带领大家用不到50行代码实现类似抖音的评论弹窗,让你轻松打造高交互性的APP界面。

XPopup框架简介

XPopup是一个功能强大的Android弹窗框架,它提供了丰富的弹窗类型和高度的定制性,可以轻松创建各种炫酷的弹窗效果。

实现抖音式评论弹窗

要实现抖音式的评论弹窗,我们首先需要创建评论列表弹窗。

// 创建评论列表弹窗
val commentListPopup = XPopup.Builder(this)
    .asCustom(CommentListPopup(this))
    .show()

接下来,我们需要创建输入框弹窗并设置其依附于评论列表弹窗。

// 创建输入框弹窗
val inputPopup = XPopup.Builder(this)
    .asInputConfirm("评论", null)
    .moveUpToKeyboard(false) // 不跟随键盘移动
    .bindLayout(R.layout.layout_input_popup) // 设置自定义布局
    .show()

// 设置依附于评论列表弹窗
inputPopup.popupImpl.popupContentView.layoutParams = XPopupUtils.createLayoutParams(
    LayoutParams.MATCH_PARENT,
    LayoutParams.MATCH_PARENT,
    true
).apply {
    addRule(BELOW, commentListPopup.popupImpl.popupContentView.id)
}

在自定义布局中,我们还需要处理输入框的发送按钮事件。

// 发送按钮点击事件
binding.btnSend.setOnClickListener {
    // 获取输入框内容并处理发送逻辑
    val content = binding.etInput.text.toString()
    // ... 发送评论逻辑

    // 关闭输入框弹窗
    inputPopup.dismiss()
}

自定义弹窗效果

为了让弹窗更贴近抖音的效果,我们可以对XPopup框架提供的默认效果进行一些自定义。

// 设置评论列表弹窗动画
commentListPopup.popupImpl.animationDuration = 300 // 设置动画时长
commentListPopup.popupImpl.offsetX = 0f // 设置水平偏移量
commentListPopup.popupImpl.offsetY = 0f // 设置垂直偏移量

// 设置输入框弹窗动画
inputPopup.popupImpl.animationDuration = 200 // 设置动画时长
inputPopup.popupImpl.offsetY = 100f // 设置垂直偏移量

代码示例

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        findViewById<View>(R.id.btnShowPopup).setOnClickListener {
            // 创建评论列表弹窗
            val commentListPopup = XPopup.Builder(this)
                .asCustom(CommentListPopup(this))
                .show()

            // 创建输入框弹窗并设置其依附于评论列表弹窗
            val inputPopup = XPopup.Builder(this)
                .asInputConfirm("评论", null)
                .moveUpToKeyboard(false) // 不跟随键盘移动
                .bindLayout(R.layout.layout_input_popup) // 设置自定义布局
                .show()

            // 设置依附于评论列表弹窗
            inputPopup.popupImpl.popupContentView.layoutParams = XPopupUtils.createLayoutParams(
                LayoutParams.MATCH_PARENT,
                LayoutParams.MATCH_PARENT,
                true
            ).apply {
                addRule(BELOW, commentListPopup.popupImpl.popupContentView.id)
            }

            // 自定义弹窗效果
            commentListPopup.popupImpl.animationDuration = 300 // 设置动画时长
            commentListPopup.popupImpl.offsetX = 0f // 设置水平偏移量
            commentListPopup.popupImpl.offsetY = 0f // 设置垂直偏移量

            inputPopup.popupImpl.animationDuration = 200 // 设置动画时长
            inputPopup.popupImpl.offsetY = 100f // 设置垂直偏移量

            // 发送按钮点击事件
            binding.btnSend.setOnClickListener {
                // 获取输入框内容并处理发送逻辑
                val content = binding.etInput.text.toString()
                // ... 发送评论逻辑

                // 关闭输入框弹窗
                inputPopup.dismiss()
            }
        }
    }
}

总结

本文使用XPopup框架,用不到50行代码实现了类似抖音的炫酷评论弹窗,该弹窗具有两层结构,包括评论列表和输入框,具有瞬间出现的效果。通过本文,大家可以快速掌握XPopup框架的使用,并轻松创建高交互性的APP界面。