android animation——动画的基本属性

如果想在app中加入炫酷的动画,那么这些基本属性是必须掌握的。
本来我使用word文档记录的,传递过来只能以这种方式显示了。

1,  view动画
    a)  四种变换:
        i.  平移,<translate>,TranslateAnimation
        ii. 缩放,<scale>,ScaleAnimation
        iii.    旋转,<rotate>,RotateAnimation
        iv. 透明度,<alpha>,AlphaAnimation
    b)  Xml文件创建
        i.  res/anim
    c)  标签含义
        i.  <set>动画集合:
            1.  interpolator 为插值器,插值器的选择影响动画的移动过程
            2.  shareInterpolator 表示集合中的动画是否公用一个插值器,true/false
            3.  duration 动画的持续时间
            4.  fillAfter 动画结束后view是否停留在结束为止,true/false
        ii. <translate>平移:
            1.  fromXDelta:x的起始值,0
            2.  toXDelta:x的结束值,100
            3.  fromYDelta:y的起始值
            4.  toYDelta:y的结束值
        iii.    <scale>缩放:
            1.  fromXScale:水平缩放起始值:0
            2.  toXScale:水平缩放结束值:1
            3.  fromYScale:竖直方向起始值
            4.  toYScale: 竖直方向结束值
            5.  pivotX:缩放轴点X
            6.  pivotY:缩放轴点Y
        iv. <rotate>旋转:
            1.  fromDegrees旋转开始的角度:
            2.  toDegrees:旋转结束的角度
            3.  pivotX:旋转的轴点x
            4.  pivotY:旋转的轴点y
        v.  <alpha>透明度:
            1.  fromAlpha:透明度的起始值,0
            2.  toAlpha:透明度的结束值,1
    d)  引用xml文件:
        i.  Animation animation=AnimationUtils.loadAnimaton(context,R.anim.anim_demo);
            View.startAnimation(animationss);
2,  帧动画
    a)  Xml文件创建:drawable/anim_demo
    b)  Xml文件写法:
        i.  根标签:<animation-list>
        1.  Oneshot 是否只播放一次,true/false
        ii. Item :<item>:
            1.  Duration 一帧的播放时间,毫秒
        iii.    引用xml文件:
            1.  View.setBackgroundResource(R.drawable.anim_demo);
            2.  AnimationDrawable animationDrawable=(AnimationDrawable)view.getBackground();
3,  LayoutAnimation(父布局的动画效果,指向子view进行):
    a)  定义xml文件:
        i.  <LayoutAnimation delay=”0.5” adimationOrder=”normal” animation=”@anim/anim_demo”/>
            1.  Delay:开始动画延迟,子动画会依次延迟出场,01
            2.  adimationOrder:子动画顺序
                a)  normal 顺序显示
                b)  reverse 逆向显示
                c)  random 随机出场
            3.  animation 为子元素指定具体的入场动画
    b)  使用方法:
        i.  给GroupView指定layoutAnimation属性
            1.  layoutAnimation=”@anim/anim_layout”
    c)  代码实现方法:
        i.  Animation animation=AnimationUtils.loadAnimation(context,R.anim.anim_item);
        ii. LayoutAnimationController controller=new LayoutAniationController(animation);
        iii.    Controller.setDelay(0.5f);
        iv. Controller.setorder(LayoutAnimationController.ORDER_NORMAL);
        v.  listView.setLayoutAnimation(controller);
4,  Activity的切换效果:
    a)  overridePendingTransition(int enterAnim,int exitAnim);
        i.  这个方法必须在finish();或者startActivity(intent);之后调用
        ii. EnterAnim: activity被打开时调用的动画资源
        iii.    exitAnim:activity被暂停时调用的动画资源
    b)  使用方法:
        i.  Intent intent=new Intent(this,activity.class);
        ii. startActivity(intent);
        iii.    overridePendingTransition(R.anim.anim_demo1,R.anim.anim_demo2);
    c)  activity退出时也可调用该方法
    d)  Fragment也可以添加切换动画
        i.  FragmentTransaction中的setCustomAnimations()方法
5,  属性动画(最灵活的动画实现方式):
    a)  ObjectAnimator:
        i.  代码实现:ObjectAnimator objectAnimator= ObjectAnimator.ofFloat(view,"translationY",-view.getHeight());
        objectAnimator.setDuration(1000);//动画执行时间
        objectAnimator.setRepeatCount(ValueAnimator.INFINITE);//设置重复计数。设置成无限循环
        objectAnimator.setRepeatMode(ValueAnimator.REVERSE);//设置重复的模式,反转效果
        objectAnimator.start();
        ii. 标签含义:
            1.  propertyName=“translationY”:属性动画的作用对象名称
            2.  duration=”1000”:动画的时常
            3.  valueFrom=”200”:属性的起始值
            4.  valueTo=“300”:属性的结束值
            5.  startOffset=”500”:动画的延迟时间
            6.  repeatCount=”1”:动画的重复次数,infinite表示无限循环,0默认,-1也表示无限循环
            7.  repeatMode=”动画的重复模式”,reverse反转效果,restart从头开始
            8.  valueType=”intType”:表示propertyName所指向的属性类型,intType和FloatType两种
    b)  ValueAnimator:
        i.  代码实现:ValueAnimator valueAnimator1=ObjectAnimator.ofInt(view,"backgroundColor",/*红色*/0xffff8080,/*蓝色*/0xff8080ff);
            valueAnimator1.setDuration(1000);//动画执行时间
            valueAnimator1.setEvaluator(new ArgbEvaluator());//设置估值器
            valueAnimator1.setRepeatCount(ValueAnimator.INFINITE);//设置重复计数。设置成无限循环
            valueAnimator1.setRepeatMode(ValueAnimator.REVERSE);//设置重复的模式,反转效果
            valueAnimator1.start();
        ii. 标签含义
            1.  ValueAnimator的标签属性只比ObjectAnimator少了propertyName标签
    c)  AnimatorSet(属性动画集合):
        i.  AnimatorSet animatorSet=new AnimatorSet();
        animatorSet.playTogether(
              ObjectAnimator.ofFloat(show_anim,"rotationX",0,360),
               ObjectAnimator.ofFloat(show_anim,"rotationY",0,180),
               ObjectAnimator.ofFloat(show_anim,"rotation",0,-90),
               ObjectAnimator.ofFloat(show_anim,"translationY",0,90),
               ObjectAnimator.ofFloat(show_anim,"translationX",0,90),
               ObjectAnimator.ofFloat(show_anim,"scaleX",1,1.5f),
               ObjectAnimator.ofFloat(show_anim,"scaleY",1,1.5f),
               ObjectAnimator.ofFloat(show_anim,"alpha",1,0.25f,1)
        );
        animatorSet.setDuration(time);
        animatorSet.start();
        ii. 标签含义:
            1.  Ordering:子动画的播放模式:together表示同时播放,sequentially表示按顺序播放
6,  插值器的种类:
    a)  LinearInterpolator linearInterpolator;//线性插值器,根据时间百分比设置属性百分比
    b)  TimeInterpolator timeInterpolator;//时间插值器,匀速动画
    c)  AccelerateInterpolator accelerateInterpolator;//加速度插值器,两头慢中间快,默认的播放效果
    d)  DecelerateInterpolator decelerateInterpolator;//减速插值器,越来越慢

你可能感兴趣的:(动画,UI,android)