使用阴影偏移处理拖放

问题描述

我想实现带阴影偏移的拖放功能,但是Android框架的接触点计算存在问题。

我已使用拖动阴影生成器设置了垂直偏移量:

        override fun onProvideShadowMetrics(outShadowSize: Point,outShadowTouchPoint: Point) {
            super.onProvideShadowMetrics(outShadowSize,outShadowTouchPoint)

            outShadowSize.set(dragParams.viewWidth,dragParams.viewHeight)

            outShadowTouchPoint.y = dragParams.viewVerticalOffset
        }

它看起来像这样:

enter image description here

乍一看,效果很好,直到接近顶部或底部边框为止。

框架根据手指位置而不是阴影位置计算输入/退出/移动事件。如果我们有一个偏移量,我们可以这样计算阴影的centerY:val centerY = (rawY - viewVerticalOffset + viewHeight / 2).toInt(),但是框架显然仍将使用手指位置。

因此,当我们用手指越过底部边框时,它将发送一个ACTION_DRAG_EXITED事件,无论阴影仍位于放置目标内:

enter image description here

如果我们没有用手指越过顶部边界,它仍会认为拖动仍在放置目标的范围内(但阴影完全不在此范围内):

enter image description here

那么,如果我想实现带有阴影的垂直偏移的拖放,该怎么办?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)