如果想在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:开始动画延迟,子动画会依次延迟出场,0到1
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;//减速插值器,越来越慢