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轉化成圖片了,所以要是放大就會出現整體被放大的情況。
下面是點擊之前和點擊之後的效果圖:
在這裏插入圖片描述
在這裏插入圖片描述
高德地圖相關信息,共勉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章