[android] fix CameraAnimatorActivity leaks
This commit is contained in:
committed by
Łukasz Paczos
parent
c1643a03e8
commit
41fa4bda51
@@ -35,35 +35,30 @@ public class CameraAnimatorActivity extends AppCompatActivity implements OnMapRe
|
||||
private static final double ANIMATION_DELAY_FACTOR = 1.5;
|
||||
private static final LatLng START_LAT_LNG = new LatLng(37.787947, -122.407432);
|
||||
|
||||
private final LongSparseArray<AnimatorBuilder> animators = new LongSparseArray<AnimatorBuilder>() {
|
||||
{
|
||||
put(R.id.menu_action_accelerate_decelerate_interpolator, () -> {
|
||||
AnimatorSet animatorSet = new AnimatorSet();
|
||||
animatorSet.playTogether(
|
||||
createLatLngAnimator(START_LAT_LNG, new LatLng(37.826715, -122.422795)),
|
||||
obtainExampleInterpolator(new FastOutSlowInInterpolator(), 2500)
|
||||
);
|
||||
return animatorSet;
|
||||
});
|
||||
private final LongSparseArray<Animator> animators = new LongSparseArray<>();
|
||||
|
||||
put(R.id.menu_action_bounce_interpolator, () -> {
|
||||
AnimatorSet animatorSet = new AnimatorSet();
|
||||
animatorSet.playTogether(
|
||||
createLatLngAnimator(START_LAT_LNG, new LatLng(37.787947, -122.407432)),
|
||||
obtainExampleInterpolator(new BounceInterpolator(), 3750)
|
||||
);
|
||||
return animatorSet;
|
||||
});
|
||||
{
|
||||
AnimatorSet accelerateDecelerateAnimatorSet = new AnimatorSet();
|
||||
accelerateDecelerateAnimatorSet.playTogether(
|
||||
createLatLngAnimator(START_LAT_LNG, new LatLng(37.826715, -122.422795)),
|
||||
obtainExampleInterpolator(new FastOutSlowInInterpolator(), 2500)
|
||||
);
|
||||
animators.put(R.id.menu_action_accelerate_decelerate_interpolator, accelerateDecelerateAnimatorSet);
|
||||
|
||||
put(R.id.menu_action_anticipate_overshoot_interpolator, () ->
|
||||
obtainExampleInterpolator(new AnticipateOvershootInterpolator(), 2500)
|
||||
);
|
||||
AnimatorSet bounceAnimatorSet = new AnimatorSet();
|
||||
bounceAnimatorSet.playTogether(
|
||||
createLatLngAnimator(START_LAT_LNG, new LatLng(37.787947, -122.407432)),
|
||||
obtainExampleInterpolator(new BounceInterpolator(), 3750)
|
||||
);
|
||||
animators.put(R.id.menu_action_bounce_interpolator, bounceAnimatorSet);
|
||||
|
||||
put(R.id.menu_action_path_interpolator, () -> obtainExampleInterpolator(
|
||||
PathInterpolatorCompat.create(.22f, .68f, 0, 1.71f), 2500));
|
||||
}
|
||||
};
|
||||
animators.put(R.id.menu_action_anticipate_overshoot_interpolator,
|
||||
obtainExampleInterpolator(new AnticipateOvershootInterpolator(), 2500)
|
||||
);
|
||||
|
||||
animators.put(R.id.menu_action_path_interpolator, obtainExampleInterpolator(
|
||||
PathInterpolatorCompat.create(.22f, .68f, 0, 1.71f), 2500));
|
||||
}
|
||||
|
||||
private MapView mapView;
|
||||
private MapboxMap mapboxMap;
|
||||
@@ -161,7 +156,7 @@ public class CameraAnimatorActivity extends AppCompatActivity implements OnMapRe
|
||||
//
|
||||
|
||||
private Animator obtainExampleInterpolator(int menuItemId) {
|
||||
return animators.get(menuItemId).build();
|
||||
return animators.get(menuItemId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -198,6 +193,7 @@ public class CameraAnimatorActivity extends AppCompatActivity implements OnMapRe
|
||||
private void playAnimation(int itemId) {
|
||||
Animator animator = obtainExampleInterpolator(itemId);
|
||||
if (animator != null) {
|
||||
animator.cancel();
|
||||
animator.start();
|
||||
}
|
||||
}
|
||||
@@ -238,6 +234,9 @@ public class CameraAnimatorActivity extends AppCompatActivity implements OnMapRe
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
mapView.onStop();
|
||||
for (int i = 0; i < animators.size(); i++) {
|
||||
animators.get(animators.keyAt(i)).cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -274,8 +273,4 @@ public class CameraAnimatorActivity extends AppCompatActivity implements OnMapRe
|
||||
return latLng;
|
||||
}
|
||||
}
|
||||
|
||||
interface AnimatorBuilder {
|
||||
Animator build();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user