问题描述
我想实现带阴影偏移的拖放功能,但是Android框架的接触点计算存在问题。
我已使用拖动阴影生成器设置了垂直偏移量:
override fun onProvideShadowMetrics(outShadowSize: Point,outShadowTouchPoint: Point) {
super.onProvideShadowMetrics(outShadowSize,outShadowTouchPoint)
outShadowSize.set(dragParams.viewWidth,dragParams.viewHeight)
outShadowTouchPoint.y = dragParams.viewVerticalOffset
}
它看起来像这样:
框架根据手指位置而不是阴影位置计算输入/退出/移动事件。如果我们有一个偏移量,我们可以这样计算阴影的centerY:val centerY = (rawY - viewVerticalOffset + viewHeight / 2).toInt()
,但是框架显然仍将使用手指位置。
因此,当我们用手指越过底部边框时,它将发送一个ACTION_DRAG_EXITED
事件,无论阴影仍位于放置目标内:
如果我们没有用手指越过顶部边界,它仍会认为拖动仍在放置目标的范围内(但阴影完全不在此范围内):
那么,如果我想实现带有阴影的垂直偏移的拖放,该怎么办?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)