如何在android上设置多段线动画?

如何在android上设置多段线动画?,android,google-maps,google-polyline,Android,Google Maps,Google Polyline,如何在android google地图上绘制动画多段线?我已经实现了动画的轨迹库。我想在android上的Lyft上创建多段线 创建两个板条阵列列表,然后按给定方法创建多段线 private fun createPolyLine() { val lineOptions = PolylineOptions() lineOptions.width(6f) lineOptions.color(ContextCompat.getColor(act!!,

如何在android google地图上绘制动画多段线?我已经实现了动画的轨迹库。我想在android上的Lyft上创建多段线


创建两个板条阵列列表,然后按给定方法创建多段线

private fun createPolyLine() {

        val lineOptions = PolylineOptions()
        lineOptions.width(6f)
        lineOptions.color(ContextCompat.getColor(act!!, R.color.colorPrimary))
        lineOptions.startCap(SquareCap())
        lineOptions.endCap(SquareCap())
        lineOptions.jointType(JointType.ROUND)
        blackPolyLine = googleMap!!.addPolyline(lineOptions)

        val greyOptions = PolylineOptions()
        greyOptions.width(6f)
        greyOptions.color(Color.GRAY)
        greyOptions.startCap(SquareCap())
        greyOptions.endCap(SquareCap())
        greyOptions.jointType(JointType.ROUND)
        greyPolyLine = googleMap!!.addPolyline(greyOptions)

        animatePolyLine()
    }
然后创建这些多段线的动画

private fun animatePolyLine() {
        val animator = ValueAnimator.ofInt(0, 100)
        animator.duration = 1500
        animator.interpolator = LinearInterpolator()
        animator.addUpdateListener { animator ->
            val latLngList =
                blackPolyLine!!.points
            val initialPointSize = latLngList.size
            val animatedValue = animator.animatedValue as Int
            val newPoints = animatedValue * decodedPath.size / 100
            if (initialPointSize < newPoints) {
                latLngList.addAll(decodedPath.subList(initialPointSize, newPoints))
                blackPolyLine!!.points = latLngList
            }
        }
        animator.addListener(polyLineAnimationListener)
        animator.start()
    }

private var polyLineAnimationListener: Animator.AnimatorListener =
        object : Animator.AnimatorListener {
            override fun onAnimationStart(animator: Animator) {}
            override fun onAnimationEnd(animator: Animator) {
                val blackLatLng: MutableList<LatLng> = blackPolyLine!!.points
                val greyLatLng: MutableList<LatLng> = greyPolyLine!!.points
                greyLatLng.clear()
                greyLatLng.addAll(blackLatLng)
                blackLatLng.clear()
                blackPolyLine!!.points = blackLatLng
                greyPolyLine!!.points = greyLatLng
                blackPolyLine!!.zIndex = 2f
                animator.start()
            }

            override fun onAnimationCancel(animator: Animator) {}
            override fun onAnimationRepeat(animator: Animator) {}
        }
private fun animatePolyLine(){
val animator=ValueAnimator.ofInt(01100)
animator.duration=1500
animator.interpolator=LinearInterpolator()
animator.addUpdateListener{animator->
拉丁英语=
黑色多段线!!点
val initialPointSize=latLngList.size
val animatedValue=animator.animatedValue为Int
val newPoints=animatedValue*decodedPath.size/100
if(initialPointSize
private fun plotPolyline(){
var polyline=“已编码的电缆线路”
var list=PolyUtil.decode(多段线)
val blackOptions=PolylineOptions()
blackOptions.startCap(RoundCap())
blackOptions.endCap(RoundCap())
黑色选项。宽度(10.0f)
黑色选项。颜色(颜色。黑色)
blackOptions.zIndex(2.0f)
var blackPolyline=googleMap.addPolyline(blackOptions)
val greyOptions=PolylineOptions()
greyOptions.startCap(RoundCap())
greyOptions.endCap(RoundCap())
灰色选项。宽度(8.0f)
greyOptions.addAll(列表)
颜色(ContextCompat.getColor(this,R.color.gray\u-dark))
var greyPolyline=googleMap.addPolyline(灰色选项)
val valueAnimator=valueAnimator.ofInt(0,100)
valueAnimator.duration=1500
valueAnimator.interpolator=LinearInterpolator()
valueAnimator.addUpdateListener{
val points:List=greyPolyline.getPoints()
val percentValue=valueAnimator.animatedValue作为Int
val size=points.size
val newPoints=(大小*(百分比值/100.0f)).toInt()
val p=点。子列表(0,新点)
黑色多段线。点=p
}
valueAnimator.addListener(对象:Animator.AnimatorListener{
覆盖AnimationStart(动画:Animator?){
}
覆盖AnimationEnd(动画:Animator?){
动画?.start()
}
覆盖动画取消(动画:Animator?){
}
重写AnimationRepeat(动画:Animator?){
}
})
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(list.get(0),15.0f))
valueAnimator.start()
}

这可能有助于其工作,但我希望在进度增加时删除以前的路径颜色。有什么解决方案吗?@Sandip然后你可以删除旧路径并创建新路径我不明白你想说什么,如果是工作,那么批准它删除红色圆圈部分你从列表中删除latlng你可以展示一下如何使用Java完成吗?谢谢
 private fun plotPolyline() {

    var polyline = "encoded_pyline"
 
    var list = PolyUtil.decode(polyline)
  

    val blackOptions = PolylineOptions()
    blackOptions.startCap(RoundCap())
    blackOptions.endCap(RoundCap())
    blackOptions.width(10.0f)
    blackOptions.color(Color.BLACK)
    blackOptions.zIndex(2.0f)

    var blackPolyline = googleMap.addPolyline(blackOptions)


    val greyOptions = PolylineOptions()
    greyOptions.startCap(RoundCap())
    greyOptions.endCap(RoundCap())
    greyOptions.width(8.0f)
    greyOptions.addAll(list)
    greyOptions.color(ContextCompat.getColor(this, R.color.gray_dark))
    var greyPolyline = googleMap.addPolyline(greyOptions)

    val valueAnimator = ValueAnimator.ofInt(0, 100)
    valueAnimator.duration = 1500
    valueAnimator.interpolator = LinearInterpolator()
    valueAnimator.addUpdateListener {
        val points: List<LatLng> = greyPolyline.getPoints()
        val percentValue = valueAnimator.animatedValue as Int
        val size = points.size
        val newPoints = (size * (percentValue / 100.0f)).toInt()
       
        val p = points.subList(0, newPoints)
        blackPolyline.points = p


    }

    valueAnimator.addListener(object: Animator.AnimatorListener{
        override fun onAnimationStart(animation: Animator?) {

        }

        override fun onAnimationEnd(animation: Animator?) {
            animation?.start()
        }

        override fun onAnimationCancel(animation: Animator?) {
        }

        override fun onAnimationRepeat(animation: Animator?) {
        }
    })

    googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(list.get(0), 15.0f))
    valueAnimator.start()
}