Android基础之动画

Android动画有两种Tween(形变动画)和Frame(帧动画),使用时可以在res\anim路径下创建动画的xml,也可以代码实现。
Tween里包含了:
Scale:缩放动画、Rotate:旋转动画、Translate:移动动画、Alpha::透明渐变动画
Scale:

<scale>标签为缩放节点  
android:fromXscale="1.0" 表示开始时X轴缩放比例为 1.0 (原图大小 * 1.0 为原图大小)  
android:toXscale="0.0"   表示结束时X轴缩放比例为0.0(原图大小 *0.0 为缩小到看不见)  
android:fromYscale="1.0" 表示开始时Y轴缩放比例为 1.0 (原图大小 * 1.0 为原图大小)  
android:toYscale="0.0"   表示结束时Y轴缩放比例为0.0(原图大小 *0.0 为缩小的看不到了)  
android:pivotX="50%"     X轴缩放的位置为中心点  
android:pivotY="50%"     Y轴缩放的位置为中心点  
android:duration="2000"  动画播放时间 这里是2000毫秒也就是2秒

scaleAnimation =  new ScaleAnimation(0.0f, 1.0f, 0.0f,  1.0f,  
                  Animation.RELATIVE_TO_SELF, 0.5f,    
                  Animation.RELATIVE_TO_SELF, 0.5f);    
scaleAnimation.setDuration(2000); 

Rotate:

<rotate>标签为旋转节点  
Tween一共为我们提供了3种动画渲染模式。  
android:interpolator="@android:anim/accelerate_interpolator" 设置动画渲染器为加速动画(动画播放中越来越快)  
android:interpolator="@android:anim/decelerate_interpolator" 设置动画渲染器为减速动画(动画播放中越来越慢)  
android:interpolator="@android:anim/accelerate_decelerate_interpolator" 设置动画渲染器为先加速在减速(开始速度最快 逐渐减慢)  
如果不写的话 默认为匀速运动  
android:fromDegrees="+360"设置动画开始的角度  
android:toDegrees="0"设置动画结束的角度  

rotateAnimation = new RotateAnimation(360.0f, 0.0f,  
        Animation.RELATIVE_TO_SELF, 0.5f,    
        Animation.RELATIVE_TO_SELF, 0.5f);              
rotateAnimation.setDuration(2000);  

Translate:

<translate>标签为缩放节点  
 android:fromXDelta="0"    x起始
 android:toXDelta="320"    x结束
 android:fromYDelta="0"    y起始
 android:toYDelta="480"    y结束
 android:duration="2000"    间隔
 android:repeatCount="infinite"   重复次数

 translateAnimation = new TranslateAnimation(0, 320, 0, 480);  
 translateAnimation.setDuration(2000); 

Alpha::

<alpha>标签为alpha透明度节点  
android:fromAlpha="1.0" 设置动画起始透明度为1.0 表示完全不透明  
android:toAlpha="0.0"设置动画结束透明度为0.0 表示完全透明  
也就是说alpha的取值范围为0.0 - 1.0 之间 

alphaAnimation = new AlphaAnimation(1.0f, 0.0f);   
alphaAnimation.setDuration(2000);   

提一下AnimationSet,这是一个动画集合可以放多个动画,控制动画的播放顺序,以上几个动画都可以添加监听,常用的是动画结束监听。

Frame动画:
AnimationDrawable 继承于Drawable

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">  
 <item android:drawable="@drawable/a" android:duration="100" />   
 <item android:drawable="@drawable/b" android:duration="100" />   
 <item android:drawable="@drawable/c" android:duration="100" />   
 <item android:drawable="@drawable/d" android:duration="100" />   
 <item android:drawable="@drawable/e" android:duration="100" />   
 <item android:drawable="@drawable/f" android:duration="100" />   
 <item android:drawable="@drawable/g" android:duration="100" />   
 <item android:drawable="@drawable/h" android:duration="100" />   
 <item android:drawable="@drawable/i" android:duration="100" />   
 <item android:drawable="@drawable/j" android:duration="100" />   
 </animation-list> 

animationDrawable = new AnimationDrawable();
int duration = 70;
animationDrawable.addFrame(getDrawable(R.drawable.ic_pull_refresh_1), duration);
animationDrawable.addFrame(getDrawable(R.drawable.ic_pull_refresh_2), duration);
animationDrawable.addFrame(getDrawable(R.drawable.ic_pull_refresh_3), duration);
animationDrawable.addFrame(getDrawable(R.drawable.ic_pull_refresh_4), duration);
animationDrawable.addFrame(getDrawable(R.drawable.ic_pull_refresh_5), duration);
animationDrawable.setOneShot(false);
imageView.setImageDrawable(animationDrawable);

/**
animationDrawable.start(); 开始这个动画
animationDrawable.stop(); 结束这个动画
animationDrawable.setAlpha(100);设置动画的透明度, 取值范围(0 - 255)
animationDrawable.setOneShot(true); 设置单次播放
animationDrawable.setOneShot(false); 设置循环播放
animationDrawable.isRunning(); 判断动画是否正在播放
animationDrawable.getNumberOfFrames(); 得到动画的帧数。
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值