Animation
一. Tween Animation 变换动画、补间动画
对View进行操作,只能够作用在View上。
只是改变了View的显示效果而已,而不会真正去改变View的属性。现在屏幕的左上角有一个按钮,然后我们通过补间动画将它移动到了屏幕的右下角,现在你可以去尝试点击一下这个按钮,点击事件是绝对不会触发的,因为实际上这个按钮还是停留在屏幕的左上角,只不过补间动画将这个按钮重新绘制到了屏幕的右下角而已。
基本属性:
1)Duration:动画持续事件(毫秒ms)
家校本
2)repeatCount:动画执行次数
3)repeatMode:动画执行模式(顺序/倒序)
4)interPolator:动画插入器(设置加速或者减速)
5)fillAfter:bool,(true)动画结束后保持动画结束状态
6)fillBefore:bool,动画结束后保持动画前的状态
7)startOffSet:组合动画使用
都有2中方式实现
1) 配置文件:res/anim
2) Code实现:AlphaAnimation、ScaleAnimation、TrasnlateAnimation、RotateAnimation
1. Alpha Animation:渐变透明度动画(0.0完全透明;1.0完全不透明)
1)配置文件
<alpha
android:duration="1000"
android:fromAlpha="0.1"
android:toAlpha="1.0">
</alpha>
Animation alphaAnim=AnimationUtils.loadAimationn(this,R.anim.alpha_anim);
img.startAnimation(alphaAnim);
2)Code
Animation alphaAnim=new AlphaAnimation(0.1f,1.0f);
img.startAnimation(alphaAnim);
2. Scale Animation:渐变缩放动画
fromXScale,toXScale:起始和结束y坐标的伸缩尺寸
fromYScale,toYScale:起始和结束y坐标的伸缩尺寸
piovtX,pivotY:相对于X轴、Y轴的起始位置
3. Translate Animation:位移动画
fromXDelta,toXDelta:起始和结束x坐标的位置
fromYDelta,toYDelta:起始和结束y坐标的位置
皮蛋粥的做法fromXDelta="50%p"//表示相对于父控件的位置
4. Rotate Animation:旋转动画
fromDegrees:起始角度
toDegrees:终止角度
pivotX,pivotY:起始旋转相对x、y轴的坐标位置
5. 组合动画
1)监听
Animation anim1=AnimationUtils.loadAnimation(this,R.anim.alpha);
img.startAnimation(anim1);
Animation anim2=AnimationUtils.loadAnimation(this,anslate);
anim1.tAnimationListener(new AnimationListener(){
public void onAnimationEnd(Animation arg0){
img.startAnimation(anim2);
}
});
2)AnimatorSet
AnimatorSet bouncer = new AnimatorSet();
bouncer.play(anim1).before(anim2);
bouncer.play(anim2).with(anim3);
bouncer.play(anim2).with(anim4)
bouncer.play(anim5).after(amin2);
3)订阅英文
<alpha
android:duration="2000"
android:fronAlpha="0.1"
百色
android:toAlpha="1.0">
</alpha>
<alpha
android:duration="1000"
android:startOfft="2000"
android:fronAlpha="1.0"
android:toAlpha="0.1">
</alpha>
Animation alphaAnim=AnimationUtils.loadAnimation(this,R.anim.alpha_anim);
img.startAnimation(alphaAnim);
6. Activity Animation
overridePendingTransition(R.anim.in,R.anim.out);
二. Frame Animation 帧动画
文件位置:drawable/anim_list
<animation-list>
<item android:drawable="@drawable/one" android:duration="2000">
<item android:drawable="@drawable/two" android:duration="2000">
<item android:drawable="@drawable/third" android:duration="2000">
</animation-list>
三. Layout Animation 布局动画
Animation anim=AnimationUtils.loadAnimation(this,R.anim.in);
LayoutAnimationController lac=new LayoutAnimationController(anim);
lac.tOrder(LayoutAnimationController.Order_Normal);//排序
listView.tLayoutAnimator(lac);
listView.startAnimator();
四. Property Animator 属性动画
3.0版本之后才能使用,只要被操作对象有get方法就能使用属性动画。
效率更高、不是对操作对象的重绘,而是通过改变操作对象属性产生动画。
补间动画只能对View进行操作,属性动画就不再受这个限制,它可以对任意对象进行动画操作。
ObjectAnimator内部的工作机制并不是直接对我们传入的属性名进行操作的,而是会去寻找这个属性名对应的get和t方法,因此alpha属性所对应的get和t方法应该就是:
public void tAlpha(float value);
public float getAlpha();
1)方法1
杨宗纬最火的10首歌// 每个动画异步执行
ObjectAnimator.ofFloat(img, "rotation", 0F, 200F).tDuration(200).start();
ObjectAnimator.ofFloat(img, "translationX", 0, 200F).tDuration(200).start();
ObjectAnimator.ofFloat深居简出是什么意思>小威向前冲(img, "translationY", 0, 200F).tDuration(200).start();
将TextView在垂直方向上放大3倍再还原
ObjectAnimator animator=ObjectAnimator.ofFloat(textview,"scaleY",1f,3f,1f);
animator.tDuration(5000);
animator.start();
2)方法2
//每个动画异步执行
PropertyValuesHolder p1=PropertyValuesHolder.ofFloat("rotation",0,360F);
PropertyValuesHolder p2=PropertyValuesHolder.ofFloat("translationX",0,360F);
PropertyValuesHolder p3=PropertyValuesHolder.ofFloat("translationY",0去年的树课文,360F);
ObjectAnimator.ofPropertyValuesHolder(img,p1,p2,p3).tDuration(1000).start();
3)方法3
ObjectAnimator ob1= ObjectAnimator.ofFloat(img, "rotation", 0F, 200F);
ObjectAnimator ob2=ObjectAnimator.ofFloat(img, "translationX", 0, 200F);
ObjectAnimator ob3=ObjectAnimator.ofFloat(img, "translationY", 0, 200F);
AnimatorSet animatorSet=new AnimatorSet();
//animatorSet.playTogether(ob1,ob2,ob3);//每个异步执行
animatorSet.playSequentially(ob1,ob2,ob3);//同步执行
animatorSet.tDuration(1000);
animatorSet.start();
ObjectAnimator moveIn=ObjectAnimator.ofFloat(textview,"translationX",-500f,0f);
ObjectAnimator rotate=ObjectAnimator.ofFloat(textview,"rotation",0f,360f);
ObjectAnimator fadeInOut=ObjectAnimator.ofFloat(textview,"alpha",1f,0f,1f);