更新时间:2020-06-23
Marker帧动画
自v3.3.0版本起,SDK提供了给Marker增加帧动画的功能,通过MarkerOptions类来设置,一次传入一个Icon列表,通过period设定刷新的帧间隔。
示例代码如下:
//构造Icon列表 // 初始化bitmap 信息,不用时及时 recycle BitmapDescriptor bdA = BitmapDescriptorFactory.fromResource(R.drawable.icon_marka); BitmapDescriptor bdB = BitmapDescriptorFactory.fromResource(R.drawable.icon_markb); BitmapDescriptor bdC = BitmapDescriptorFactory.fromResource(R.drawable.icon_markc); ArrayList<BitmapDescriptor> giflist = new ArrayList<BitmapDescriptor>(); giflist.add(bdA); giflist.add(bdB); giflist.add(bdC); //Marker位置坐标 LatLng llD = new LatLng(39.906965, 116.401394); //构造MarkerOptions对象 MarkerOptions ooD = new MarkerOptions() .position(llD) .icons(giflist) .zIndex(0) .period(20);//定义刷新的帧间隔 //在地图上展示包含帧动画的Marker Overlay mMarkerD = (Marker) (mBaiduMap.addOverlay(ooD));
效果如图:
Marker动画
除了可以自定义的帧动画,Marker还支持设置旋转、缩放、平移、透明、和组合动画效果。通过Marker类setAnimation方法设置。
Transformation | 平移 |
RotateAnimation | 旋转 |
ScaleAnimation | 缩放 |
SingleScaleAnimation | X 或 Y 轴方向单独缩放 |
AlphaAnimation | 透明 |
AnimationSet | 动画集合 |
平移动画效果的示例代码如下:
//通过LatLng列表构造Transformation对象 Transformation mTransforma = new Transformation(llC, latLng1, llC); //动画执行时间 mTransforma.setDuration(500); //动画重复模式 mTransforma.setRepeatMode(Animation.RepeatMode.RESTART); //动画重复次数 mTransforma.setRepeatCount(1); //根据开发需要设置动画监听 mTransforma.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart() { } @Override public void onAnimationEnd() { } @Override public void onAnimationCancel() { } @Override public void onAnimationRepeat() { } }); //设置动画 mMarkerC.setAnimation(mTransforma); //开启动画 mMarkerC.startAnimation();
展示效果如图:
加载Marker时增加动画
自v3.6.0版本起,SDK提供了加载Marker时的动画效果,有如下四种效果供开发者选择:
字段 | 效果 |
MarkerAnimateType.none | 无效果 |
MarkerAnimateType.drop | 从天上掉下 |
MarkerAnimateType.grow | 从地下生长 |
MarkerAnimateType.jump | 跳跃 |
通过MarkerOptions类animateType方法设置。
示例代码如下:
MarkerOptions ooA = new MarkerOptions() .position(llA) .icon(bdA); //设置掉下动画 ooA.animateType(MarkerAnimateType.drop);
效果如图: