咱們先看下效果圖:java
apk下載地址git
掃我下載apk:github
優點:數組
關鍵類 MoveUtils 提供的方法以下。app
/** * * @param list 座標數組 * @param time 時間 毫秒 多長時間走完這些數組 * @param isContinue 是否在以上次中止後的座標點繼續移動 當list.size()=1 * 注意:若是調用 startMove(list,time,isContinue) 若是list.size=1 只傳遞了一個點而且isContinue=false 那麼 onSetGeoPoint回調方法返回的角度是0 由於只有一個點是沒法計算角度的 */ public void startMove(List<LatLng> list, int time, boolean isContinue) /** * * @param latLng 座標 * @param time 時間 毫秒 * @param isContinue 是否在以上次中止後的座標點繼續移動 當list.size()=1 isContinue 就會變的很是有用 * 注意:若是調用 startMove(list,time,isContinue) 若是list.size=1 只傳遞了一個點而且isContinue=false 那麼 onSetGeoPoint回調方法返回的角度是0 由於只有一個點是沒法計算角度的 */ public void startMove(LatLng latLng, int time, boolean isContinue) /** * 中止移動 */ public void stop() /** * 釋放工具類 */ public void destory() /** * 設置監聽回調 * @param callBack OnCallBack */ public void setCallBack(OnCallBack callBack) public interface OnCallBack { /** * 設置座標IPoint * <p> * 角度返回 這裏的角度返回是根據兩個點的座標來計算的 * 並非傳感器返回的 * * * * @param point IPoint * @param rotate 角度 */ void onSetGeoPoint(IPoint point, float rotate); }
Demo代碼ide
moveUtils = new MoveUtils(); moveUtils.setCallBack(new MoveUtils.OnCallBack() { @Override public void onSetGeoPoint(IPoint point, float rotate) { if (!marker.isRemoved()) { marker.setGeoPoint(point); //獲取實際車輛方向。 float carDirection = 360.0F - rotate + getAMap().getCameraPosition().bearing; marker.setRotateAngle(carDirection); } } }); moveUtils.startMove(list, 5000, fasle);
MoveUtils工具
MoveUtils源碼code
CustomAnimatorget
源碼下載地址