android映射v2标记缩放动画

时间:2014-04-10 14:26:33

标签: android google-maps android-animation

如果您看到谷歌地图应用程序(开箱即用的应用程序)并说您搜索类似食物的东西,那么您将会看到几个标记为parker pin或dot。当您点击一个点时,点会动画并成为一个完整的标记引脚(您可以看到标记放大。 我想知道我们是否可以使用goole map for android v2做同样的事情。

任何提示都会有所帮助。

ps:我目前的想法是使用插值器并使用setIcon几次替换标记图标,但严重的是,如果谷歌已经完成它,那么我们应该能够做到。

感谢

2 个答案:

答案 0 :(得分:1)

您当前的想法,即每隔几毫秒使用setIcon替换图标,这是您使用api执行此操作的唯一方法。

注意:每次调用api都会通过Binders进行IPC,所以看起来可能不太好。如果你想让动画看起来更好(更多fps),我建议把ImageView放在同一个地方并改为动画。动画结束后,只需setIcon一次。

答案 1 :(得分:0)

根据@MaciejGórski的想法,我创造了一个小概念证明。

有趣的部分是here

override fun onMarkerClick(p0: Marker?): Boolean {
    val marker = p0!!

    val mapIcon = marker.tag as Bitmap


    val animation = ValueAnimator.ofFloat(1F, ICON_SELECTED_SCALE_FACTOR)
    animation.duration = 600
    animation.interpolator = AnticipateOvershootInterpolator()

    animation.addUpdateListener { animationState ->
        val scaleFactor = animationState.animatedValue as Float
        val newBitMap = Bitmap.createScaledBitmap(
                mapIcon,
                (ICON_WIDTH * scaleFactor).toInt(),
                (ICON_HEIGHT * scaleFactor).toInt(),
                false
        )
        marker.setIcon(BitmapDescriptorFactory.fromBitmap(newBitMap))
    }
    animation.start()

    this.animation = animation

    return true
}

这里有完整的例子: https://github.com/meierjan/MarkerScaleAnimationTest