标签:
安卓提供的Api四种动画:
动画常用API:
1 setDuration(3000); //动画播放时间毫秒 2 setFillAfter(true); //显示动画结束时View的样子,动画结束时View长啥样,之后的显示就长啥样 3 setRepeatCount(5); //重复播放次数
淡入淡出:AlphaAnimation
最简单的动画,透明到显示或者显示到透明的动画.
1 public void alpha(View view){ 2 float fromAlpha = 0.1f; // 3 float toAlpha = 1f; 4 AlphaAnimation alpha = new AlphaAnimation(fromAlpha, toAlpha); 5 alpha.setDuration(3000); //动画持续时间 6 alpha.setRepeatCount(5); //重复播放次数 7 iv.startAnimation(alpha); 8 }
比例缩放:ScaleAnimation
这种动画还是挺好用的,掌握好缩放尺寸可以了,当然它也是有锚点的.
1 public void scale(View view){ 2 //这4个值,0表示缩小到没有,1表示正常,比1大就是放大 3 float fromX = 0.1f; //动画开始时x的缩放尺寸 4 float toX = 2.0f; //动画结束时x的缩放尺寸 5 float fromY = 0.1f; //动画开始时y的缩放尺寸 6 float toY = 2.0f; //动画结束时y的缩放尺寸 7 //设置锚点的四个参数 8 int pivotXType = Animation.RELATIVE_TO_SELF; //x相对于物件自己的 9 float pivotXValue = 0.5f; //取值范围0~1之间,相对的x轴位置,相对于物件就是物件的宽度中间,相对于屏幕就是屏幕中间 10 int pivotYType = Animation.RELATIVE_TO_SELF; //y相对于物件自己的 11 float pivotYValue = 0.5f;//取值范围0~1之间,相对的y轴位置,相对于物件就是物件的宽度中间,相对于屏幕就是屏幕中间 12 ScaleAnimation scale = new ScaleAnimation(fromX, toX, fromY, toY, pivotXType, pivotXValue, pivotYType, pivotYValue); 13 scale.setDuration(3000); 14 scale.setFillAfter(true); //显示动画结束时View的样子,上面是2.0f倍放大,那么显示就会是那么大 15 iv.startAnimation(scale); 16 }
锚点旋转:RotateAnimation
这种动画比较容易控制的,只要想清楚锚点的四个参数,很容易掌握.
1 public void rotate(View view){ 2 float fromDegrees = 0; //动画开始的角度 3 float toDegrees = -360; //动画结束时旋转的角度(可以大于360)正数顺时针旋转,负数逆时针旋转 4 //设置锚点的四个参数 5 int pivotXType = Animation.RELATIVE_TO_SELF; //x相对于物件自己的 6 float pivotXValue = 0.5f; //取值范围0~1之间,相对的x轴位置,相对于物件就是物件的宽度中间,相对于屏幕就是屏幕中间 7 int pivotYType = Animation.RELATIVE_TO_SELF; //y相对于物件自己的 8 float pivotYValue = 0.5f;//取值范围0~1之间,相对的y轴位置,相对于物件就是物件的宽度中间,相对于屏幕就是屏幕中间 9 RotateAnimation rotate = new RotateAnimation(fromDegrees, toDegrees, pivotXType, pivotXValue, pivotYType, pivotYValue); 10 rotate.setDuration(3000); 11 iv.startAnimation(rotate); 12 }
位移:
位移动画,用到比较多,比如在手机卫士程序锁中,点击一个应用加锁,就把这个应用View向又移动消失...
1 public void translate(View view){ 2 int fromXType = Animation.RELATIVE_TO_SELF; //x轴相对的物件 3 float fromXValue = 0f; //从相对于物件x轴x位置 4 int toXType = Animation.RELATIVE_TO_PARENT; //x轴移动相对物 5 float toXValue = -1f; //x移动 6 int fromYType = Animation.RELATIVE_TO_SELF; //y轴相对的物件 7 float fromYValue = 0f; //从相对于物件y轴y位置 8 int toYType = Animation.RELATIVE_TO_PARENT; //y轴移动相对物 9 float toYValue = 0f; //y移动 10 TranslateAnimation translate = new TranslateAnimation(fromXType, fromXValue, toXType, toXValue, fromYType, fromYValue, toYType, toYValue); 11 translate.setDuration(3000); 12 iv.startAnimation(translate); 13 }
动画集合:AnimationSet
偶尔做一些好玩的动画还是可以的
1 public void animationSet() { 2 //创建动画 3 AlphaAnimation alpha = new AlphaAnimation(0.1f,1f); 4 alpha.setDuration(3000); 5 alpha.setRepeatCount(3); 6 7 RotateAnimation rotate = new RotateAnimation(0f,360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f); 8 rotate.setDuration(3000); 9 rotate.setRepeatCount(3); 10 11 ScaleAnimation scale = new ScaleAnimation(1f,0.1f,1f,0.1f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f); 12 scale.setDuration(3000); 13 scale.setRepeatCount(3); 14 15 TranslateAnimation translate = new TranslateAnimation(Animation.RELATIVE_TO_SELF,0f,Animation.RELATIVE_TO_PARENT,-1f,Animation.RELATIVE_TO_SELF,0f,Animation.RELATIVE_TO_PARENT,0f); 16 translate.setDuration(3000); 17 translate.setRepeatCount(3); 18 19 AnimationSet set = new AnimationSet(false); //建立动画集合,false是让每个动画参数独立 20 //把动画加入集合 21 set.addAnimation(alpha); 22 set.addAnimation(rotate); 23 set.addAnimation(scale); 24 set.addAnimation(translate); 25 iv.startAnimation(set); //控件播放动画 26 }
标签:
原文地址:http://www.cnblogs.com/linjiqian/p/4604009.html