繁体   English   中英

如何在android中为标记设置动画

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM