diff options
author | Tobrun <tobrun@mapbox.com> | 2016-05-23 12:02:51 +0200 |
---|---|---|
committer | Tobrun <tobrun@mapbox.com> | 2016-05-23 12:36:55 +0200 |
commit | 98f8dd6ae6e8b14f7646f39386bdb55b0012b75c (patch) | |
tree | e98a4cb712ba4c39fb5162ddc7c98c35f2a611dc /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils | |
parent | 40bb02fe749ea8221a8da57b715bcbc1866edb8b (diff) | |
download | qtlocation-mapboxgl-98f8dd6ae6e8b14f7646f39386bdb55b0012b75c.tar.gz |
[android] - cleanup marker view integration
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/AnimatorUtils.java | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/AnimatorUtils.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/AnimatorUtils.java new file mode 100644 index 0000000000..495393c258 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/AnimatorUtils.java @@ -0,0 +1,93 @@ +package com.mapbox.mapboxsdk.utils; + +import android.animation.Animator; +import android.animation.AnimatorInflater; +import android.animation.AnimatorListenerAdapter; +import android.animation.ObjectAnimator; +import android.support.annotation.AnimatorRes; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.view.View; + +public class AnimatorUtils { + + public static void animate(@NonNull final View view, @AnimatorRes int animatorRes, @Nullable OnAnimationEndListener listener) { + animate(view, animatorRes, -1, listener); + } + + public static void animate(final View view, @AnimatorRes int animatorRes, int duration, @Nullable final OnAnimationEndListener listener) { + if (view == null) { + return; + } + + view.setLayerType(View.LAYER_TYPE_HARDWARE, null); + Animator animator = AnimatorInflater.loadAnimator(view.getContext(), animatorRes); + if (duration != -1) { + animator.setDuration(duration); + } + + animator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + view.setLayerType(View.LAYER_TYPE_NONE, null); + if (listener != null) { + listener.onAnimationEnd(); + } + } + }); + animator.setTarget(view); + animator.start(); + } + + public static void animate(@NonNull final View view, @AnimatorRes int animatorRes) { + animate(view, animatorRes, -1); + } + + public static void animate(@NonNull final View view, @AnimatorRes int animatorRes, int duration) { + animate(view, animatorRes, duration, null); + } + + public static void rotate(@NonNull final View view, float rotation) { + view.setLayerType(View.LAYER_TYPE_HARDWARE, null); + ObjectAnimator rotateAnimator = ObjectAnimator.ofFloat(view, View.ROTATION, view.getRotation(), rotation); + rotateAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + view.setLayerType(View.LAYER_TYPE_NONE, null); + } + }); + rotateAnimator.start(); + } + + public static void alpha(@NonNull final View convertView, float alpha, @Nullable final OnAnimationEndListener listener) { + convertView.setLayerType(View.LAYER_TYPE_HARDWARE, null); + ObjectAnimator rotateAnimator = ObjectAnimator.ofFloat(convertView, View.ALPHA, convertView.getAlpha(), alpha); + rotateAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animation) { + super.onAnimationStart(animation); + convertView.setVisibility(View.VISIBLE); + } + + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + convertView.setLayerType(View.LAYER_TYPE_NONE, null); + if (listener != null) { + listener.onAnimationEnd(); + } + } + }); + rotateAnimator.start(); + } + + public static void alpha(@NonNull final View convertView, float alpha) { + alpha(convertView, alpha, null); + } + + public interface OnAnimationEndListener { + void onAnimationEnd(); + } +} |