动画知识点汇总

来源:互联网 发布:2015年程序员考试真题 编辑:程序博客网 时间:2024/04/25 15:14

一、补间动画

alpha、translate、scale、rotate

1、Animation实现方式:

1)加载配置文件实现(res/anim)——alpha、translate,scale、rotate

Animation scale = AnimationUtils.loadAnimation(Activity.this,R.anim.scale);

img.startAnimation(scale);

四种变化常用属性:alpha(fromAlpha,toAlpha),scale(fromXScale,toXScale,pivotX,pivotY),translate(formXDelta,toXDelta,fillAfter),rotate(fromDegree,toDegree,pivotX,pivotY)

2)java代码实现——AlphaAnimation、TranslateAnimation、ScaleAnimation、RotateAnimation

Animation alpha = new AlphaAnimation(0.1f,1.0f);

alpha.setDuration(1000);

img.startAnimation(alpha);

2、组合动画的实现:

1)先后播放A和B,设置A的AnimationListener(),当A的onAnimationEnd出发时,执行B动画

2)先后播放A和B,通过动画集合AnimationSet,设置A和B,在B中设置startOffset为A动画的播放时间

3)动画循环闪烁,通过java代码中动画的.setRepeatCount和.setRepeatMode(Animation.REVERCE,Animation.RESTART)来实现动画循环

4) Activity之间的切换,overridePendingTranslation(R.anim.in,R.anim.out);

二、帧动画(FrameAnimation)

在res/drawable中创建一个文件,文件中采用animation-list分组设置每个item,每个item顺序播出

三、布局动画

1.LayoutAnimationController布局动画控制器的使用:

LayoutAnimationController lac = new LayoutAnimationController(this,R.anim.animation);

listview.setLayoutAnimation(lac);

listview.startLayoutAnimation();


四、属性动画

1、弥补了补间动画仅重绘动画,动作响应位置不变的缺陷,不适用于做具有交互效果的动画,属性动画可弥补这些问题

2.ObjectAnimator:

ObjectAnimator.ofFloat(imageview,“translationX”,0F,200F).setDuration(1000).start();

ObjectAnimator.ofFloat(imageview,“rotation”,0F,200F).setDuration(1000).start();

以上两个动画同时执行

3.PropertyvalueHolder(简化ObjectAninmatior,对属性动画进行了一定的优化)

PropertyValueHolder p1 = PropertyValueHolder.ofFloat("translationX",0F,200F);

PropertyValueHolder p2 = PropertyValueHolder.ofFloat("rotation",0F,360F);

ObjectAnimator.ofPropertyValueHolder(imageview,p1,p2).setDuration(1000).start();

4.AnimatorSet方法:

AnimatorSet set = new AnimatorSet();

ObjectAnimator animation01 = ObjectAnimator.ofFloat(imageview,“translationX”,0F,200F)

ObjectAnimator ainmation02 = ObjectAnimator.ofFloat(imageview,“rotation”,0F,360F)

set.playTogethor(animation01,animation02);/set.playSequentially(animation01,animation02);//set.play(animation01).with(animation02)//set.play(animation01).after(animiation02)

set.setDuration(1000);

set.start();

5.animator的监听事件:

animation01.addListener

6.interpolator插值器:

animator.setInterpolator(new BounceInterpolator());

7.ValueAnimator,数值发生器,是objectAnimator的父类

ValueAnimator animator = ValueAnimator.ofInt(0F,100F);

animator.setDuration(1000);

animator.addUpdatedListener(...)...

0 0
原创粉丝点击