diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt index 22c22f5d97..e4e5429b21 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt @@ -1,8 +1,10 @@ package com.mogo.eagle.core.function.v2x.events.scenario.scene.airoad +import android.animation.* import android.content.* import android.graphics.* import android.util.* +import android.view.animation.* import androidx.lifecycle.* import androidx.lifecycle.Lifecycle.Event import androidx.lifecycle.Lifecycle.Event.ON_CREATE @@ -21,6 +23,7 @@ import io.netty.util.internal.* import java.util.* import java.util.concurrent.* import java.util.concurrent.atomic.* +import kotlin.collections.ArrayList /** * Ai云道路施工事件,道路颜色标记类 @@ -41,7 +44,8 @@ object AiRoadMarker { private val line by lazy { AtomicReference() } - private val colors = arrayListOf(Color.parseColor("#002ABAD9"), Color.parseColor("#FF7A30")) + private val START_COLOR = Color.parseColor("#002ABAD9") + private val END_COLOR = Color.parseColor("#FFFF7A30") private val markers = ConcurrentSet() @@ -51,7 +55,6 @@ object AiRoadMarker { setGps(true) width(50f) useGradient(true) - colorValues(colors) } } @@ -236,8 +239,16 @@ object AiRoadMarker { return } removeLine() + val evaluator = ArgbEvaluator() + val interceptor = DecelerateInterpolator(1.5f) + val total = points.size + val colors = ArrayList() + (0..total).forEach { i -> + colors += evaluator.evaluate(interceptor.getInterpolation(i * 1f / total), START_COLOR, END_COLOR) as Int + } var line = line.get() options.points(points) + options.colorValues(colors) Logger.d(TAG, "--- marker --- 7 --- points: ${points.size}") if (line == null || line.isDestroyed) { val l = overlayManager.addPolyline(options)