安卓地图V2标记缩放动画

3
如果你在谷歌地图应用程序(开箱即用的应用程序)中搜索“食物”之类的内容,你会看到一些标记作为parking pins或点。当你点击一个点时,这个点会动画化并变成一个完整的标记针(你可以看到标记缩放)。我想知道我们是否可以在使用Google Maps for Android v2时做到同样的效果。
任何提示都会有所帮助。
PS:我的当前想法是使用插值器并使用setIcon多次替换标记图标,但是,如果Google已经这样做了,那么我们应该能够做到。
谢谢。

你看过这个吗?https://developers.google.com/maps/documentation/android/marker#video_animating_markers - pskink
不想无礼,但你真的理解我的问题了吗?我之前看过这个视频,如果我没错的话,他们只是改变位置,而我只想在原地缩放标记图标。 - rajankz
如果他们没有谈论其他类型的动画,那么很可能意味着没有其他类型的动画存在,否则他们会提到它。 - pskink
如果您看到MaciejGórski的回复,他同意在标记上进行比例动画的唯一方法是每隔几秒钟设置一次图标(或在确切位置创建一个图像视图)。无论如何,如果您认为自己有一个非卡顿的解决方案,请分享出来。我很想看到它,并将接受它作为答案。 - rajankz
不好意思,我没有完美的解决方案,因为你不能使用公共地图V2 API来完成它。 - pskink
2个回答

2

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

有趣的部分在这里

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


你需要什么? - Langusten Gustel
以上代码是Kotlin编写的,请提供Java代码。 - Achin

1
你目前的想法是,即使用 setIcon 每隔几毫秒替换图标,这是使用api唯一的方法。
注意:每次调用api都会通过Binders进行IPC,因此可能看起来不太好。如果您希望动画效果更好(更高的fps),我建议将 ImageView 放在同一位置并对其进行动画处理。动画完成后,只需执行一次 setIcon

3
说实话,这很令人沮丧。iOS版的谷歌地图具有这些功能(您可以获取与标记相关联的视图,然后对其执行动画)。Android平台上的独立谷歌地图应用程序可以正常工作(如问题中所述),这让许多人想知道为什么我(开发者)不能简单地做同样的事情:( - rajankz
@MaciejGorski 请问您如何在同一位置创建ImageView? - Qandeel Abbassi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接