Android沿着路径拖动视图

Android沿着路径拖动视图,android,kotlin,Android,Kotlin,所以我有路径,我想垂直拖动我的视图。 这是我的onTouchListener视图代码: val point = FloatArray(2) val pathMeasure = PathMeasure(path, true) tooltipView.setOnTouchListener(object :View.OnTouchListener{ override fun onTouch(v: View?, event: MotionEvent?): Boolean {

所以我有路径,我想垂直拖动我的视图。 这是我的
onTouchListener
视图代码:

val point = FloatArray(2)
val pathMeasure = PathMeasure(path, true)

 tooltipView.setOnTouchListener(object :View.OnTouchListener{
            override fun onTouch(v: View?, event: MotionEvent?): Boolean {
                onDataPointTouchListener()
                if (event?.action == MotionEvent.ACTION_MOVE){
                    v?.performClick()
                    pathMeasure.getPosTan(event.x, point, null) // This is where I get path point
                    v?.x = point[0] - tooltipWith / 2
                    v?.y = point[1] - tooltipHeight
                }else if (event?.action == MotionEvent.ACTION_UP){
                    tooltipView.animate().translationX(previousX - tooltipWith / 2)
                    tooltipView.animate().translationY(previousY - tooltipHeight)
                    layoutDate.visible()
                }
                return true
            }
        })
谁能帮帮我吗。我的路径是一条曲线。我希望能够在该行中拖动视图。就像seekbar一样:


使用MotionLayout(constraint layout 2 library)要简单得多-您只需要设置一个包含2个约束集的XML文件,其余的由library处理

还可以在特定进度处添加路径坐标,库将创建路径交互

参考资料:


  • 你想做什么有些困难,这取决于你愿意走什么捷径

    我能想到的最简单的方法是:
    使用pathMeasure在路径上行走,并确定手指最靠近路径上的哪个点(与event.x/y比较,在整个路径上循环)。将位置移动到该点。这不像seekbar那样平滑。这会让你的手指动起来。

    谢谢。但我使用的是自定义布局。这是一个图表,我希望用户能够通过触摸拖动工具提示。哦,我明白了,对不起。是否希望在用户释放拖动后启动路径动画?否。我更新了问题。请看一看对我来说听起来像是运动布局用例,除非你没有布局xmlYes。我没有layout.xml。谢谢。我用其他方法解决了这个问题。但你的描述很真实。