如果您看到谷歌地图应用程序(开箱即用的应用程序)并说您搜索类似食物的东西,那么您将会看到几个标记为parker pin或dot。当您点击一个点时,点会动画并成为一个完整的标记引脚(您可以看到标记放大。 我想知道我们是否可以使用goole map for android v2做同样的事情。
任何提示都会有所帮助。
ps:我目前的想法是使用插值器并使用setIcon几次替换标记图标,但严重的是,如果谷歌已经完成它,那么我们应该能够做到。
感谢
答案 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