android RecyclerView项目滑动动画问题

up9lanfz  于 2023-09-28  发布在  Android
关注(0)|答案(1)|浏览(147)

我目前正在开发一个Android应用程序,其中涉及RecyclerView和滑动到解雇功能。在实现滑动显示选项动画时,我遇到了一个特殊的问题。
下面是我的自定义滑动到显示选项处理的代码片段:

override fun onChildDrawOver(
        c: Canvas, recyclerView: RecyclerView,
        viewHolder: RecyclerView.ViewHolder, dX: Float, dY: Float,
        actionState: Int, isCurrentlyActive: Boolean
    ) {
        val itemView = viewHolder.itemView
        val isCanceled = dX == 0f && !isCurrentlyActive
        if (isCanceled) {
            super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, false)
            return
        }

        if (viewHolder is OrderDetailProductsAdapter.OrderProductItemViewHolder) {
            val binding = LayoutHistoryDetailItemBinding.bind(itemView)
            binding.apply {
                getDefaultUIUtil().onDraw(c, recyclerView, this.itemHistoryDetailMainView, dX / 2, dY, actionState, isCurrentlyActive)
            }
        }
    }

我面临的问题是,这段代码没有像预期的那样将视图滚动到屏幕的一半。然而,当我使用下面的代码调用超类的onChildDraw方法时,它按预期工作:

super.onChildDraw(c, recyclerView, viewHolder, dX / 2, dY, actionState, isCurrentlyActive)

我希望了解为什么自定义实现不能产生所需的结果,而默认的onChildDraw方法可以。任何关于如何解决这个问题的见解或建议将不胜感激。

6kkfgxo0

6kkfgxo01#

注意,有两个类似的方法onChildDrawonChildDrawOver
onChildDrawOver的存在似乎是为了在L之前的平台上兼容(参见。What is the difference between the ItemTouchHelper.Callback methods onChildDraw and onChildDrawOver?)。
我认为您的代码只覆盖了onChildDrawOver,但覆盖了onChileDraw,并且默认(超类)onChildDraw仍然存在。
我建议避免触摸onChildDrawOver,并确保只使用**onChileDraw**。

相关问题