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。谢谢。我用其他方法解决了这个问题。但你的描述很真实。