android animation


animation 分类  

  • property  animation: 相比view animation,property animation可以更改view本身任何property(如color,position,size),而且也包括非view的对象, 
  • view  animation(tween):  只更改view画的位置,click等事件位置并没有更改,还需在原位置click, 但总体使用更容易,更简单。
  • drawable animation(frame) : 多张图片资源连续切换的效果


propertyAnimator:
ValueAnimator: 完全自定义自己的动画变化规律, 
ObjectAnimator:继承ValueAnimator,  可以用PropertyValuesHolder打包多个property一起设置,从而减少ObjectAnimator数量
ViewPropertyAnimator: View.animate()....

Multiple ObjectAnimator objects

ObjectAnimator animX = ObjectAnimator.ofFloat(myView, "x", 50f);
ObjectAnimator animY = ObjectAnimator.ofFloat(myView, "y", 100f);
AnimatorSet animSetXY = new AnimatorSet();
animSetXY.playTogether(animX, animY);
animSetXY.start();

One ObjectAnimator
PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("x", 50f);
PropertyValuesHolder pvhY = PropertyValuesHolder.ofFloat("y", 100f);
ObjectAnimator.ofPropertyValuesHolder(myView, pvhX, pvhY).start();

ViewPropertyAnimator
myView.animate().x(50f).y(100f);


其中有多种property可以设置,参考ViewPropertyAnimator类方法:

除了Java code实现方式, xml的配置同理:

<set android:ordering="sequentially">
    <set>
        <objectAnimator
            android:propertyName="x"
            android:duration="500"
            android:valueTo="400"
            android:valueType="intType"/>
        <objectAnimator
            android:propertyName="y"
            android:duration="500"
            android:valueTo="300"
            android:valueType="intType"/>
    </set>
    <objectAnimator
        android:propertyName="alpha"
        android:duration="500"
        android:valueTo="1f"/>
</set>	
然后java 中通过下面方式使用:

AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext,
    R.anim.property_animator);
set.setTarget(buttonView);
set.start();


view animation:

一般view的变化主要有<alpha><scale><translate><rotate>,所以对应的view 动画主要分为:

AlphaAnimationRotateAnimationScaleAnimationTranslateAnimation

使用方法java代码:

        TranslateAnimation ta = new TranslateAnimation(0f, 300f, 0f, 300f);
        ta.setFillAfter(true);
        ta.setDuration(300);
        btn.startAnimation(ta);

xml配置方式:

<scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="700" />
    <set android:interpolator="@android:anim/decelerate_interpolator">
        <scale
           android:fromXScale="1.4"
           android:toXScale="0.0"
           android:fromYScale="0.6"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400"
           android:fillBefore="false" />
        <rotate
           android:fromDegrees="0"
           android:toDegrees="-45"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400" />
    </set>


然后通过 加载xml
AnimationUtils.loadAnimation

drawable animation :

可以把如下加到ImageView作背景,   需要启动动画时把ImageView的background转化成AnimationDrawable,然后start:

(AnimationDrawable) imageView.getBackground().start();

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="true">
    <item android:drawable="@drawable/rocket_thrust1" android:duration="200" />
    <item android:drawable="@drawable/rocket_thrust2" android:duration="200" />
    <item android:drawable="@drawable/rocket_thrust3" android:duration="200" />
</animation-list>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值