Android 椭圆轨迹动画
2017-07-18 17:19
1451 查看
用Path属性记录椭圆的轨迹:
Path path = new Path(); RectF rectF = new RectF(left, top, right, bottom); path.addOval(rectF, Path.Direction.CW);
API21以上可直接用属性动画里的方法(5.0以上)
ObjectAnimator traslateAnimator = ObjectAnimator.ofFloat(imageView, "x", "y", path); traslateAnimator.start();
如果API为21以下就要通过PathMeasure:
package com.wyt.hcy.trajectoryanimationdemo; import android.animation.ObjectAnimator; import android.graphics.Path; import android.graphics.PathMeasure; import android.graphics.RectF; import android.util.Log; import android.widget.ImageView; import com.nineoldandroids.animation.ValueAnimator; /** * Created by hcy on 2017/7/14 0014. * <p> * func 动画工具类 */ public class AnimationUtils { private static float[] mCurrentPosition = new float[2]; /** * 圆形轨迹动画 */ public static void circleAnimation(float left, float top, float right, float bottom, final ImageView imageView) { Path path = new Path(); RectF rectF = new RectF(left, top, right, bottom); path.addOval(rectF, Path.Direction.CW); final PathMeasure mPathMeasure = new PathMeasure(path, true); ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, mPathMeasure.getLength()); valueAnimator.setDuration(5000); valueAnimator.setRepeatCount(ValueAnimator.INFINITE); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { // 当插值计算进行时,获取中间的每个值, // 这里这个值是中间过程中的曲线长度(下面根据这个值来得出中间点的坐标值) float value = (Float) animation.getAnimatedValue(); Log.i("Value::", value + ""); // ★★★★★获取当前点坐标封装到mCurrentPosition // boolean getPosTan(float distance, float[] pos, float[] tan) : // 传入一个距离distance(0<=distance<=getLength()),然后会计算当前距 // 离的坐标点和切线,pos会自动填充上坐标,这个方法很重要。 mPathMeasure.getPosTan(value, mCurrentPosition, null);//mCurrentPosition此时就是中间距离点的坐标值 // 移动的商品图片(动画图片)的坐标设置为该中间点的坐标 imageView.setTranslationX(mCurrentPosition[0]); a51d imageView.setTranslationY(-mCurrentPosition[1]); } }); valueAnimator.start(); } }
相关文章推荐
- android动画的抖动轨迹及淡入淡出效果
- Android动画之旅(三)----6个小球移动的轨迹动画
- android 阿拉伯语下,图库中编辑运动轨迹图片,动画中会显示绿色的图片
- IOS 圆球沿着椭圆轨迹做动画
- Android 动画--使用Path来规划动画的轨迹
- android 阿拉伯语下,图库中编辑运动轨迹图片,动画中会显示绿色的图片
- android之Animation自定义动画轨迹
- Android利用vectordrawable实现轨迹动画
- Android 椭圆路径 长按暂停动画的实现
- android 阿拉伯语下,图库中编辑运动轨迹图片,动画中会显示绿色的图片
- Android购物车运动轨迹动画
- 【Android进阶】如何写一个很屌的动画(1)---先实现一个简易的自定义动画框架
- 【Android】动画 —— view高度渐变的动画
- Android常用动画ListView动画显示
- 在Android中显示GIF动画
- android 动画
- android Gallery之动画效果
- Android MTK平台最完备的开机动画修改教程
- Android 动画——Frame Animation与Tween Animation
- Android UI系列之Path也能做酷炫动画