res/anim 用于动画设置 根节点为 set , xml 文件中的配置:
TweenAnimation 补间动画 :alpha 渐变透明 scale 缩放 rotate 旋转 translate 上下左右移动
alpha: 取值0.0 ----1.0 float 类型 持续时间单位为毫秒
<!--AlphaAnimation(float fromAlpha, …) 动画开始的透明度(0.0到1.0,0.0是全透明,1.0是不透明) AlphaAnimation(…, float toAlpha) 动画结束的透明度,同上--> <!--setDuration(long) 动画持续时间,毫秒为单位--> <!--setRepeatCount(int) 重复次数--> <!-- setRepeatMode(int) 重复类型有两个值,reverse表示倒序回放,restart表示从头播放--> <!--setStartOffset(long) 调用start函数之后等待开始运行的时间,单位为毫秒--> <!--setDetachWallpaper(boolean) 是否在壁纸上运行--> <!--setFillAfter(boolean) 控件动画结束时是否保持动画最后的状态--> <!--setFillBefore(boolean) 控件动画结束时是否还原到开始动画前的状态--> <!--setFillEnabled(boolean) 与android:fillBefore效果相同--> <!--setZAdjustment(int) 表示被设置动画的内容运行时在Z轴上的位置(top/bottom/normal),默认为normal--> <!--setInterpolator(Interpolator) 设定插值器(指定的动画效果,譬如回弹等)--> <alpha android:detachWallpaper="true" android:duration="3000" android:fillAfter="true" android:fillBefore="true" android:fillEnabled="true" android:fromAlpha="0" android:repeatCount="infinite" android:repeatMode="reverse" android:startOffset="3000" android:toAlpha="1" android:zAdjustment="top"android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
Interpolator的介绍
AccelerateDecelerateInterpolator | 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速 |
AccelerateInterpolator | 在动画开始的地方速率改变比较慢,然后开始加速 |
CycleInterpolator | 动画循环播放特定的次数,速率改变沿着正弦曲线 |
DecelerateInterpolator | 在动画开始的地方速率改变比较慢,然后开始减速 |
LinearInterpolator | 在动画的以均匀的速率改变 |
<rotate android:duration="3000" android:fromDegrees="0"//动画开始时的角度 android:pivotX="50%"//x轴的中点 取值为0%--100% android:pivotY="50%"//y轴的中点 同上 android:toDegrees="360" //动画结束时的角度 /> 当角度为负数——表示逆时针旋转
当角度为正数——表示顺时针旋转
(负数from——to正数:顺时针旋转)
(负数from——to负数:逆时针旋转)
(正数from——to正数:顺时针旋转)
(正数from——to负数:逆时针旋转)
<scale android:duration="3000" android:fromXScale="0.2"//x轴开始时伸缩尺寸 float 值 android:fromYScale="0.2" android:pivotX="50%" android:pivotY="50%" android:toXScale="1.0"//x轴结束时伸缩尺寸 android:toYScale="1.0" /> 0.0表示收缩到没有
1.0表示正常无伸缩
值小于1.0表示收缩
值大于1.0表示放大
<translate android:fromXDelta="0"//x轴开始时的坐标 android:toXDelta="100%"//x轴的最大值 android:fromYDelta="0" android:toYDelta="100%" android:duration="5000" />
如何在代码中引入xml中定义的动画
AnimationSet set = new AnimationSet(false);//将所有动画整合 set.addAnimation(AnimationUtils.loadAnimation(this, R.anim.alpha)); set.addAnimation(AnimationUtils.loadAnimation(this, R.anim.scale)); set.addAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate)); set.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) {//动画开始 } @Override public void onAnimationEnd(Animation animation) {//动画结束 } @Override public void onAnimationRepeat(Animation animation) {//动画重复 } }); ImageView imageView = (ImageView) findViewById(R.id.iv_welcome); imageView.startAnimation(set); }