属性动画Animator工具类

来源:互联网 发布:windows 7怎么更改只读 编辑:程序博客网 时间:2024/05/15 12:03


package com.ldw.dreamblinkfeed.util;import com.ldw.dreamblinkfeed.R;import android.animation.Animator;import android.animation.Animator.AnimatorListener;import android.animation.ObjectAnimator;import android.view.View;/** * 属性动画工具类 * @author ldw */public class AnimatorUtil {/** * Y轴移动view * @param view * @param fromY * @param toY * @param duration */public static void translateY(View view, float fromY, float toY, long duration){view.setVisibility(View.VISIBLE);ObjectAnimator translateAnimator = ObjectAnimator.ofFloat(view, "translationY", fromY, toY);translateAnimator.setDuration(duration);translateAnimator.start();}/** * X轴移动view * @param view * @param fromX * @param toX * @param duration */public static void translateX(View view, float fromX, float toX, long duration){view.setVisibility(View.VISIBLE);ObjectAnimator translateAnimator = ObjectAnimator.ofFloat(view, "translationX", fromX, toX);translateAnimator.setDuration(duration);translateAnimator.start();}/** * view在Y轴移动后,把view设置为Gone状态 * @param view * @param fromY * @param toY * @param duration */public static void translateYToGone(final View view, float fromY, float toY, long duration){animatorToGone("translationY", view, fromY, toY, duration);}/** * View透明度渐变后,设置为Gone状态 * @param view * @param fromAlpha * @param toAlpha * @param duration */public static void alphaToGone(final View view, float fromAlpha, float toAlpha, long duration){animatorToGone("alpha", view, fromAlpha, toAlpha, duration);}/** * 指定的view做完指定动画后消失 * @param animator * @param view * @param from * @param to * @param duration */private static void animatorToGone(String animator, final View view, float from, float to, long duration){view.setVisibility(View.VISIBLE);ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(view, animator, from, to);objectAnimator.setDuration(duration);objectAnimator.start();view.setTag(R.id.view_animator_tag, "start");objectAnimator.addListener(new AnimatorListener() {@Overridepublic void onAnimationStart(Animator animation) {}@Overridepublic void onAnimationRepeat(Animator animation) {}@Overridepublic void onAnimationEnd(Animator animation) {view.setTag(R.id.view_animator_tag, "end");view.setVisibility(View.GONE);view.setAlpha(1);}@Overridepublic void onAnimationCancel(Animator animation) {}});}/** * 获取该view是否正在执行动画。该view执行的动画必须是有监听动画结束的,例如调用了animatorToGone方法的 * @param view * @returntrue 正在执行动画,false 动画执行完毕或者没有执行动画 */public static boolean isAnimatorWithView(final View view){String tag = (String) view.getTag(R.id.view_animator_tag);if(tag != null && tag.equalsIgnoreCase("start")){return true;}return false;}}


其中R.id.view_animator_tag必须是定义在Strings.xml中

<?xml version="1.0" encoding="utf-8"?><resources>        <!-- view是否在执行动画的标志ldw -->    <item type="id" name="view_animator_tag"></item></resources>



0 0
原创粉丝点击