概述
高德地图–水波动画效果
思路:在地图上绘制三个半径不同的圆,动态改变他们的半径实现动画效果。
private AMap aMap;
private int minRadius = 100;
private int maxRadius = 250;
private int radius = minRadius;
private int gap = 8;
private int duration = 16;
private List<Circle> listCircle = new ArrayList<>();
private boolean isMapLongCLick;
private Latlng longClickLatlng ;
//长按地图
private void onMapLongClick(Latlng latlng){
isMapLongCLick = true;
longClickLatlng = latlng;
showRadar();
}
/*雷达*/
private void showRadar() {
if (longClickLatlng != null) {
clearCircle();
// 绘制不同半径的圆,添加到地图上
final Circle circle = aMap.addCircle(new CircleOptions().center(longClickLatlng)
.radius(radius).strokeColor(Color.argb(100, 100, 149, 237))
.fillColor(Color.argb(100, 135, 206, 250)).strokeWidth(3));
final Circle circle1 = aMap.addCircle(new CircleOptions().center(longClickLatlng)
.radius(radius-50).strokeColor(Color.argb(100, 100, 149, 237))
.fillColor(Color.argb(0, 135, 206, 250)).strokeWidth(3));
final Circle circle2 = aMap.addCircle(new CircleOptions().center(longClickLatlng)
.radius(radius-100).strokeColor(Color.argb(100, 100, 149, 237))
.fillColor(Color.argb(0, 135, 206, 250)).strokeWidth(3));
listCircle.add(circle);
listCircle.add(circle1);
listCircle.add(circle2);
//通过Handler定时刷新Circle的半径,达到动画效果
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (radius < maxRadius) {
radius = radius + gap;
} else {
radius = minRadius;
}
circle.setRadius(radius);
circle1.setRadius(radius-50);
circle2.setRadius(radius-100);
aMap.invalidate();
if (isMapLongCLick)//某种条件下,展示动画
handler.postDelayed(this, duration);
else//清除CIrcle
clearCircle();
}
}, duration);
}
}
private void clearCircle() {
for (int i = 0; i < listCircle.size(); i++) {
listCircle.get(i).remove();
listCircle.remove(i);
}
}
最后
以上就是朴实向日葵为你收集整理的高德地图--水波雷达动画的全部内容,希望文章能够帮你解决高德地图--水波雷达动画所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复