Android 高德地图 marker点击放大事件,再点击非当前marker之前marker做动画还原成本来大小

高德地图 marker点击放大事件,再点击非当前marker之前marker做动画还原成本来大小

由于UI的要求,需要在点击marker为了凸显点击的是当前marker,UI界面上做了放大的处理。

 Marker marker = mAmap.addMarker(markerOption);
 Animation markerAnimation = new ScaleAnimation(1.0f, 1.6f, 1.0f, 1.6f); // 缩放比例
 markerAnimation.setDuration(0); // 动画时间
 markerAnimation.setFillMode(1); // 动画之后保存的状态 1 动画之后的状态 0 动画之前的状态
 marker.setAnimation(markerAnimation); // 将动画赋值给当前的marker
 marker.setClickable(true); // marker设置为可点击状态

使用动画的效果去实现当前marker点击之后放大或者缩小的效果。
先是赋值了动画效果,那么接下来就是在点击的时候去触发动画。

	// marker click
    AMap.OnMarkerClickListener mMarkerListener = new AMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {
           	if (mCurrentMemMarker != null) { // 判断之前放大的marker是否还在放大的状态
	         	mCurrentMemMarker.startAnimation(); // 将之前放大的marker实现还原的状态,启动动画
    			setNotClickedMarkerAnim(); // 给之前的marker设置下一次点击需要放大的动画效果
	   		}
            mCurrentMemMarker = marker; // 当前放大的marker赋值
            marker.startAnimation(); // 放大marker的动画播放
            marker.showInfoWindow(); // 显示当前marker的infowindow
            setClickedMarkerAnim(); // 设置放大marker的还原状态动画
            return false; // 返回:true 表示点击marker后marker不会移动到地图中心;返回false 表示点击marker后marker会自动移动到地图中心
        }
    };

先后给需要的marker设置了两种动画效果,一种是放大效果,之后保持在放大之后的状态,一种是还原效果,还原成之前的大小的marker。

点击之后还原动画

	/**
     * setting original animation
     */
    private void setClickedMarkerAnim() {
        if (mCurrentMemMarker != null) {
            Animation markerAnimation = new ScaleAnimation(1.6f, 1.0f, 1.6f, 1.0f); // update original view
            markerAnimation.setDuration(0);  //set anim time
            markerAnimation.setFillMode(1);
            mCurrentMemMarker.setAnimation(markerAnimation);
        }
    }

点击之前放大动画

    /**
     * click then big view marker
     */
    private void setNotClickedMarkerAnim() {
        if (mCurrentMemMarker != null) {
            Animation markerAnimation = new ScaleAnimation(1.0f, 1.6f, 1.0f, 1.6f); //click then big view marker
            markerAnimation.setDuration(0);
            markerAnimation.setFillMode(1);
            mCurrentMemMarker.setAnimation(markerAnimation);
        }
    }

放大marker的话,不能局部放大,因为高德地图本身在加载marker的时候就将我们的view转化成图片了,所以要是放大就会出现整体被放大的情况。
下面是点击之前和点击之后的效果图:
在这里插入图片描述
Android 高德地图 marker点击放大事件,再点击非当前marker之前marker做动画还原成本来大小_第1张图片
高德地图相关信息,共勉

你可能感兴趣的:(Android,地图相关信息,Android小知识)