android 属性动画工具类
来源:互联网 发布:linux 每10秒 shell 编辑:程序博客网 时间:2024/06/08 18:32
import android.animation.Animator;import android.animation.AnimatorSet;import android.animation.ObjectAnimator;import android.view.View;import android.view.animation.DecelerateInterpolator;public class AnimationUtil {public static final Long ANIMA_TIME = 300L; /** * 缩放动画 与 平移动画 * * @param view * @param fromScale * @param toScale * @param fromX * @param toX * @param fromY * @param toY * @param listener */ public static void startZoomAnim(View view, // 缩放 float fromScale, float toScale, // 平移 float fromX, float toX, float fromY, float toY, // 动画 Animator.AnimatorListener listener ) { if (view == null) { return; } if (view.getAnimation() != null) { view.getAnimation().cancel(); view.clearAnimation(); return; } AnimatorSet localAnimatorSet = new AnimatorSet(); // ############## scaleX ############### float[] scaleX = new float[2]; scaleX[0] = fromScale; scaleX[1] = toScale; ObjectAnimator scaleXAnima = ObjectAnimator.ofFloat(view, "scaleX", scaleX); scaleXAnima.setDuration(ANIMA_TIME); scaleXAnima.setInterpolator(new DecelerateInterpolator()); // ############## scaleY ############### float[] scaleY = new float[2]; scaleY[0] = fromScale; scaleY[1] = toScale; ObjectAnimator scaleYAnima = ObjectAnimator.ofFloat(view, "scaleY", scaleY); scaleYAnima.setDuration(ANIMA_TIME); scaleYAnima.setInterpolator(new DecelerateInterpolator()); // #############translationX ########## float[] translationX = new float[2]; translationX[0] = fromX; translationX[1] = toX; ObjectAnimator translationXAnima = ObjectAnimator.ofFloat(view, "translationX", translationX); translationXAnima.setDuration(ANIMA_TIME); translationXAnima.setInterpolator(new DecelerateInterpolator()); // ###############translationY################## float[] translationY = new float[2]; translationY[0] = fromY; translationY[1] = toY; ObjectAnimator translationYAnima = ObjectAnimator.ofFloat(view, "translationY", translationY); translationYAnima.setDuration(ANIMA_TIME); translationYAnima.setInterpolator(new DecelerateInterpolator()); // Animator[] arrayOfAnimator = new Animator[4]; arrayOfAnimator[0] = scaleXAnima; arrayOfAnimator[1] = scaleYAnima; arrayOfAnimator[2] = translationXAnima; arrayOfAnimator[3] = translationYAnima; localAnimatorSet.playTogether(arrayOfAnimator); if (listener != null) { localAnimatorSet.addListener(listener); } // localAnimatorSet.start(); } /** * 开启Alpha 动画 * * @param view * @param fromAlpha * @param toAlpha */ public static void startAlphaAnima(View view, float fromAlpha, float toAlpha) { if (view == null) { return; } if (view.getAnimation() != null) { view.getAnimation().cancel(); view.clearAnimation(); return; } //-------Alpaha-------- AnimatorSet set = new AnimatorSet(); set.play(ObjectAnimator.ofFloat(view, "alpha", fromAlpha, toAlpha)); set.setDuration(ANIMA_TIME); set.setInterpolator(new DecelerateInterpolator()); set.start(); } /** * 清理目标View的动画 * * @param paramView */ public static void clearAnimation(View paramView) { if (paramView == null) return; if (paramView.getAnimation() == null) { return; } paramView.getAnimation().cancel(); paramView.clearAnimation(); } /** * 旋转动画 * * @param paramView * @param paramInt * 时间 */ public static void startRotateAnimation(View paramView, int paramInt) { float[] arrayOfFloat = new float[2]; arrayOfFloat[0] = 0.0F; arrayOfFloat[1] = 360.0F; ObjectAnimator localObjectAnimator = ObjectAnimator.ofFloat(paramView, "rotation", arrayOfFloat); localObjectAnimator.setDuration(paramInt); localObjectAnimator.setInterpolator(null); localObjectAnimator.setRepeatCount(-1); localObjectAnimator.start(); } /** * 放大动画 * * @param paramView * 目标View * @param paramFloat * 放大的比例 * @param paramAnimatorListener * @return */ public static AnimatorSet startScaleToBigAnimation(View paramView, float paramFloat, Animator.AnimatorListener paramAnimatorListener) { if (paramView.getAnimation() != null) paramView.getAnimation().cancel(); paramView.clearAnimation(); AnimatorSet localAnimatorSet = new AnimatorSet(); float[] arrayOfFloat1 = new float[2]; arrayOfFloat1[0] = 1.0F; arrayOfFloat1[1] = paramFloat; ObjectAnimator localObjectAnimator1 = ObjectAnimator.ofFloat(paramView, "scaleY", arrayOfFloat1); localObjectAnimator1.setDuration(240L); localObjectAnimator1.setInterpolator(new DecelerateInterpolator()); float[] arrayOfFloat2 = new float[2]; arrayOfFloat2[0] = 1.0F; arrayOfFloat2[1] = paramFloat; ObjectAnimator localObjectAnimator2 = ObjectAnimator.ofFloat(paramView, "scaleX", arrayOfFloat2); localObjectAnimator2.setDuration(240L); localObjectAnimator2.setInterpolator(new DecelerateInterpolator()); Animator[] arrayOfAnimator = new Animator[2]; arrayOfAnimator[0] = localObjectAnimator1; arrayOfAnimator[1] = localObjectAnimator2; localAnimatorSet.playTogether(arrayOfAnimator); if (paramAnimatorListener != null) localAnimatorSet.addListener(paramAnimatorListener); localAnimatorSet.start(); return localAnimatorSet; } /** * 缩小动画 * * @param paramView * @param paramFloat * 缩小的比例 * @param paramAnimatorListener * @return */ public static AnimatorSet startScaleToSmallAnimation(View paramView, float paramFloat, Animator.AnimatorListener paramAnimatorListener) { if (paramView.getAnimation() != null) paramView.getAnimation().cancel(); paramView.clearAnimation(); AnimatorSet localAnimatorSet = new AnimatorSet(); float[] arrayOfFloat1 = new float[2]; arrayOfFloat1[0] = paramFloat; arrayOfFloat1[1] = 1.0F; ObjectAnimator localObjectAnimator1 = ObjectAnimator.ofFloat(paramView, "scaleY", arrayOfFloat1); localObjectAnimator1.setDuration(140L); localObjectAnimator1.setInterpolator(new DecelerateInterpolator()); float[] arrayOfFloat2 = new float[2]; arrayOfFloat2[0] = paramFloat; arrayOfFloat2[1] = 1.0F; ObjectAnimator localObjectAnimator2 = ObjectAnimator.ofFloat(paramView, "scaleX", arrayOfFloat2); localObjectAnimator2.setDuration(140L); localObjectAnimator2.setInterpolator(new DecelerateInterpolator()); Animator[] arrayOfAnimator = new Animator[2]; arrayOfAnimator[0] = localObjectAnimator1; arrayOfAnimator[1] = localObjectAnimator2; localAnimatorSet.playTogether(arrayOfAnimator); localAnimatorSet.start(); return localAnimatorSet; } /** * 从上往下移动的位移动画 * * @param paramView * @return */ public static AnimatorSet startTranlateDownAnimation(View paramView) { if (paramView.getAnimation() != null) paramView.getAnimation().cancel(); paramView.clearAnimation(); AnimatorSet localAnimatorSet = new AnimatorSet(); float[] arrayOfFloat = new float[2]; arrayOfFloat[0] = -80.0F; arrayOfFloat[1] = 1.0F; ObjectAnimator localObjectAnimator = ObjectAnimator.ofFloat(paramView, "translationY", arrayOfFloat); localObjectAnimator.setDuration(240L); localObjectAnimator.setInterpolator(new DecelerateInterpolator()); localAnimatorSet.play(localObjectAnimator); localAnimatorSet.start(); return localAnimatorSet; } /** * 从下网上移动的位移动画 * * @param paramView * @return */ public static AnimatorSet startTranlateUpAnimation(View paramView) { if (paramView.getAnimation() != null) paramView.getAnimation().cancel(); paramView.clearAnimation(); AnimatorSet localAnimatorSet = new AnimatorSet(); float[] arrayOfFloat = new float[2]; arrayOfFloat[0] = 1.0F; arrayOfFloat[1] = -80.0F; ObjectAnimator localObjectAnimator = ObjectAnimator.ofFloat(paramView, "translationY", arrayOfFloat); localObjectAnimator.setDuration(240L); localObjectAnimator.setInterpolator(new DecelerateInterpolator()); localAnimatorSet.play(localObjectAnimator); localAnimatorSet.start(); return localAnimatorSet; }}
阅读全文
0 0
- android 属性动画工具类
- android 动画实现 xml属性配置说明 AnimUtil工具类
- 属性动画Animator工具类
- Android动画工具类
- Android动画--属性动画
- android动画 -- 属性动画
- Android动画-属性动画
- Android动画【属性动画】
- Android动画--属性动画
- android属性动画--布局动画
- Android 动画之属性动画
- Android中的动画,属性动画
- android-属性动画、视图动画
- Android动画之属性动画
- android动画 属性动画详解
- Android笔记----动画、属性动画
- Android动画之属性动画
- android 动画 之 属性动画
- MVC使用SignalR 提高B2C商城用户体验2
- 多态--回调
- leetcode 572. Subtree of Another Tree
- 第一节:详细透彻解读Git与SVN的区别(集中式VS分布式)
- docker rm -f Error response from daemon: Driver overlay failed to remove root filesystem
- android 属性动画工具类
- 使用JavaScript和SVG来绘制饼状图
- CDC::GetDeviceCaps()物理长度与屏幕像素间的转换
- 基于maven的邮件发送模块
- JQuery 关闭子页面,刷新父页面
- Gradle 庖丁解牛(构建源头源码浅析)
- SuperMap杯全国高校GIS大赛-Web与Online开发组学习资料
- SVN使用介绍
- Java中的多线程