[英]How to animate markers in android
我有这个代码,顺便说一下是借用的......
Ice Cream Sandwich compatible
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public static void animateMarkerToICS(Marker marker, LatLng finalPosition, final LatLngInterpolator latLngInterpolator) {
TypeEvaluator<LatLng> typeEvaluator = new TypeEvaluator<LatLng>() {
@Override
public LatLng evaluate(float fraction, LatLng startValue, LatLng endValue) {
return latLngInterpolator.interpolate(fraction, startValue, endValue);
}
};
Property<Marker, LatLng> property = Property.of(Marker.class, LatLng.class, "position");
// ADD THIS TO STOP ANIMATION IF ALREADY ANIMATING TO AN OBSOLETE LOCATION
if(animator != null && animator.isRunning()) {
animator.cancel();
animator = null;
}
animator = ObjectAnimator.ofObject(marker, property, typeEvaluator, finalPosition);
animator.setDuration((long) ANIMATION_DURATION);
animator.start();
}
发生的事情是我在这行代码中遇到了问题..
animator = ObjectAnimator.ofObject(marker, property, typeEvaluator, finalPosition);
animator.setDuration((long) ANIMATION_DURATION);
animator.start();
我使用 api 17,但库 FrameMetrics.ANIMATION_DURATION 从 api 24 开始工作..我想继续使用 api 17 有什么方法可以为我的 animator.setDuration() 提供与库相同的值?
据我了解,您仅在动画持续时间内使用FrameMetrics.ANIMATION_DURATION
。 您可以使用所需的值,例如 1000 或 100,也可以使用映射到 2 的 Constant FrameMetrics.ANIMATION_DURATION
值。使用常量值将消除 API 24 作为最低 API 的要求。 用
animator.setDuration(getResources().getInteger(android.R.integer.config_mediumAnimTime));
或者
animator.setDuration(1000);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.