安卓属性动画-笔记

1 ObjectAnimator

一. ObjectAnimator 之一个属性

1.ObjectAnimator.ofFloat(view,”rotation”,0F,270F).setDuration(1000).start();

2. ObjectAnimator 之多个属性

常用的属性
* 偏移[translationX|translationY]
* 旋转[rotation|rotationX|rotationY]
* 缩放[scaleX|scaleY]
* 具体移动的目标点[X|Y]
* 透明度[alpha]

方法一:
1.ObjectAnimator.ofFloat(view,”rotation”,0F,270F).setDuration(1000).start();
2.ObjectAnimator.ofFloat(view,”translationX”,0F,200F).setDuration(1000).start();
3.ObjectAnimator.ofFloat(view,”translationY”,0F,200F).setDuration(1000).start();

方法二: 更好的方法
1.PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat(“rotation”, 0F, 360F);
2.PropertyValuesHolder p2 = PropertyValuesHolder.ofFloat(“translationX”, 0F, 200F);
3.PropertyValuesHolder p3 = PropertyValuesHolder.ofFloat(“translationY”, 0F, 200F);
4.ObjectAnimator.ofPropertyValuesHolder(view, p1, p2, p3).setDuration(1000).start();

二. AnimatorSet

1.AnimatorSet set = new AnimatorSet();
2.ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(View, “translationX”, 0F, 200F);
3.ObjectAnimator objectAnimator2 = ObjectAnimator.ofFloat(View, “translationY”, 0F, 200F);
4.ObjectAnimator objectAnimator3 = ObjectAnimator.ofFloat(View, “rotation”, 0F, 360F);
5.
6.set.playTogether(objectAnimator1,objectAnimator2,objectAnimator3); //同时效果
7.set.playSequentially(objectAnimator1,objectAnimator2,objectAnimator3); //按顺序执行动画
8.
9./**
10. * 先运行 2, 和1 一起执行,
11. * 再执行 动画 3
12. * play()方法后面可以 .with() . after() .before() 等方法
13. */
14.set.play(objectAnimator2).with(objectAnimator1); //两个同时执行
15.set.play(objectAnimator2).after(objectAnimator3); //动画 2 完成后,再执行动画3
16.
17.
18.set.setDuration(1000);
19.set.start();

三. 动画的监听事件

1.ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(View, “translationX”, 0F, 200F);

方法一:实现全部的接口方法

objectAnimator1.addListener(new Animator.AnimatorListener()
{
    @Override
    public void onAnimationStart(Animator animation)
    {
    }
    @Override
    public void onAnimationEnd(Animator animation)
    {
    }
    @Override
    public void onAnimationCancel(Animator animation)
    {
    }
    @Override
    public void onAnimationRepeat(Animator animation)
    {
    }
});

方法二: 实现接口,可选接口方法

objectAnimator1.addListener(new AnimatorListenerAdapter()
{
    @Override
    public void onAnimationEnd(Animator animation)
    {
        super.onAnimationEnd(animation);
    }
});

四. ValueAnimator 数值发生器

A. 简单的例子
ValueAnimator animator = ValueAnimator.ofInt(0, 100);
animator.setDuration(5000);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener()
{
    @Override
    public void onAnimationUpdate(ValueAnimator animation)
    {
        Integer value = (Integer)animation.getAnimatedValue();
        //直接对控件进行操作
    }
});
animator.start();
B. 自定义的数值发生器
ValueAnimator animator = ValueAnimator.ofObject(new TypeEvaluator<PointF>()
{
   /**
    * 产生数
    * @param fraction 时间因子
    * @param startValue    起始值
    * @param endValue      结束值
    * @return
    */
   @Override
   public PointF evaluate(float fraction, PointF startValue, PointF endValue)
   {
       return null;
   }
});
animator.setDuration(5000);

animator.start();

五. 动画发生曲线

Interpolator 差值器
* AccelerateInterpolator : 加速度
* AnticipateInterpolator :
* LinearInterpolator :
* DecelerateInterpolator :
* BounceInterpolator :
* OverShootInterpolator :
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值