我正在尝试使用特定的Lat-Lng在google map
上设置涟漪动画,请参阅this,其中描述了我想要的内容,我在上面提到的链接但无法在{{1上设置动画}}
到目前为止我尝试的是 -
我的xml代码:
google map
我的Java代码在谷歌地图上发出涟漪:
<com.test.custom.RippleBackground
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/rippleLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
app:rb_color="#0099CC"
app:rb_duration="5000"
app:rb_radius="32dp"
app:rb_rippleAmount="4"
app:rb_scale="6" >
<ImageView
android:id="@+id/imgMapProfile"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_centerInParent="true"
android:src="@drawable/ic_profile_active" />
</com.test.custom.RippleBackground>
但是位图没有动画效果。请帮忙。非常感谢。
答案 0 :(得分:10)
对于想要在Google地图中创建涟漪背景的所有人,例如
new Handler().postDelayed(new Runnable() { @Override public void run() {final GroundOverlay groundOverlay11=googleMap.addGroundOverlay(new GroundOverlayOptions() .position(latLng, 2000) .transparency(0.5f) .image(BitmapDescriptorFactory.fromResource(R.drawable.krug))); OverLay(groundOverlay11); } }, 0);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
final GroundOverlay groundOverlay1=googleMap.addGroundOverlay(new GroundOverlayOptions()
.position(latLng, 2000)
.transparency(0.5f)
.image(BitmapDescriptorFactory.fromResource(R.drawable.krug)));
OverLay(groundOverlay1);
}
}, 4000);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
final GroundOverlay groundOverlay2=googleMap.addGroundOverlay(new GroundOverlayOptions()
.position(latLng, 2000)
.transparency(0.5f)
.image(BitmapDescriptorFactory.fromResource(R.drawable.krug)));
OverLay(groundOverlay2);
}
}, 8000);
Overlay课程:
public void OverLay(final GroundOverlay groundOverlay){
vAnimator = ValueAnimator.ofInt(0, 2000);
int r=99999;
vAnimator.setRepeatCount(r);
//vAnimator.setIntValues(0, 500);
vAnimator.setDuration(12000);
vAnimator.setEvaluator(new IntEvaluator());
vAnimator.setInterpolator(new LinearInterpolator());
vAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
float animatedFraction = valueAnimator.getAnimatedFraction();
Integer i = (Integer) valueAnimator.getAnimatedValue();
groundOverlay.setDimensions(i);
}
});
vAnimator.start();
}
答案 1 :(得分:0)
有一个Android库可以在谷歌地图上显示涟漪效应。使用此库,只需要2行代码就可以根据您的问题在Google地图上显示连锁效果。 请访问此链接,以便库显示涟漪:https://github.com/aarsy/GoogleMapsRippleEffect
答案 2 :(得分:0)
感谢yeldos我只是修改了他在动画结束时添加淡出效果的代码。
在叠加功能
中添加此行groundOverlay.setTransparency(animatedFraction);
正好在
之下groundOverlay.setDimensions(i);
答案 3 :(得分:0)
在综合文件夹中创建文件 sclae_fade.xml
<alpha
android:duration="1000"
android:fromAlpha="1.0"
android:toAlpha="1.0"
android:repeatCount="infinite"
android:repeatMode="restart"
/>
在drawable中创建circle_pulse.xml文件
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<solid android:color="#5532a9f3"/>
<size
android:width="120dp"
android:height="120dp"/>
</shape>
</item>
<item>
<shape android:shape="oval">
<stroke android:color="@android:color/transparent"
android:width="30dp"/>
<solid android:color="#32a9f3"/>
<size
android:width="90dp"
android:height="90dp"/>
</shape>
</item>
</layer-list>
现在设置动画
Animation logoMoveAnimation = AnimationUtils.loadAnimation(this, R.anim.scale_fade);
image_view.startAnimation(logoMoveAnimation);