Android动画

更新时间:2023-05-11 06:33:16 阅读: 评论:0

Android动画
Android动画分为三类
1、补间动画
Tween Animation(补间动画):
Tween动画,通过对View的内容进⾏⼀系列的图形变换 (包括平移、缩放、旋转、改变透明度)来实现动画效果。动画效果的定义可以采⽤XML来做也可以采⽤编码来做。
动画类型XML配置⽅式Java代码实现⽅式
渐变透明度动画效果AlphaAnimation
渐变尺⼨缩放动画效果ScaleAnimation
画⾯旋转动画效果RotateAnimation
画⾯位置移动动画效果TranslateAnimation
组合动画效果AnimationSet
xml⽂件存放⽬录如下图所⽰:
具体如何实现:
1.)alpha渐变透明度动画效果
xml⽅式:
fromAlpha:开始时透明度
toAlpha: 结束时透明度
duration:动画持续时间
fillAfter:设置动画结束后保持当前的位置
XML⽅式加载⽅式通过AnimationUtils.loadAnimation(this, R.anim.anim_alpha)获取Animation
Animation alphaAnimation = AnimationUtils.loadAnimation(this, R.anim.anim_alpha);
imageView.startAnimation(alphaAnimation);
Java代码⽅式:
Animation alphaAnimation =newAlphaAnimation(1.0f, 0.0f);
alphaAnimation.tDuration(500);//设置动画持续时间为500毫秒alphaAnimation.tFillAfter(fal);//设置动画结束后保持当前的位置(即不返回到动画开始前的位置)imageView.startAnimation(alphaAnimation);
2.)scale渐变尺⼨缩放动画效果
xml⽅式:
fromXDelta,fromYDelta 起始时X,Y座标,屏幕右下⾓的座标是X:320,Y:480
toXDelta, toYDelta    动画结束时X,Y的座标
interpolator            指定动画插⼊器
fromXScale,fromYScale, 动画开始前X,Y的缩放,0.0为不显⽰,  1.0为正常⼤⼩
toXScale,toYScale,    动画最终缩放的倍数, 1.0为正常⼤⼩,⼤于1.0放⼤
pivotX,  pivotY        动画起始位置,相对于屏幕的百分⽐,两个都为50%表⽰动画从⾃⾝中间开始
startOfft,          动画多次执⾏的间隔时间,如果只执⾏⼀次,执⾏前会暂停这段时间,单位毫秒
duration,⼀次动画效果消耗的时间,单位毫秒,值越⼩动画速度越快
repeatCount,动画重复的计数,动画将会执⾏该值+1次
repeatMode,动画重复的模式,rever为反向,当第偶次执⾏时,动画⽅向会相反。restart为重新执⾏,⽅向不变
Java⽅式:
Animation scaleAnimation =newScaleAnimation(0.0f, 1.5f, 0.0f, 1.5f, Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
scaleAnimation.tDuration(500);//设置动画持续时间为500毫秒scaleAnimation.tFillAfter(true);//如果fillAfter的值为true,则动画执⾏后,控件将停留在执⾏结束的状态scaleAnimation.tFillBefore(fal);//如果fillBefore的值为true,则动画执⾏后,控件将回到动画执⾏之前的状态scaleAnimation.tRepeatCount(3);//设置动画循环次数    scaleAnimation.tRepeatMode(Animation.REVERSE);
scaleAnimation.tStartOfft(0);
scaleAnimation.tInterpolator(this, android.R.anim.decelerate_interpolator);//设置动画插⼊器
imageView.startAnimation(scaleAnimation);
3.)rotate画⾯旋转动画效果
xml⽅式:
fromDegrees 动画开始时的⾓度
toDegrees    动画结束时物件的旋转⾓度,正代表顺时针
pivotX    属性为动画相对于物件的X坐标的开始位置
pivotY    属性为动画相对于物件的Y坐标的开始位置
Java⽅式:
Animation rotateAnimation =newRotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation.tDuration(500);
rotateAnimation.tFillAfter(true);
rotateAnimation.tInterpolator(this, android.R.anim.accelerate_decelerate_interpolator);//设置动画插⼊器
imageView.startAnimation(rotateAnimation);
4.)translate画⾯位置移动动画效果
xml⽅式:
fromXDelta,fromYDelta 起始时X,Y座标,屏幕右下⾓的座标是X:320,Y:480
toXDelta, toYDelta    动画结束时X,Y的座标
Java⽅式:
Java⽅式
Animation translateAnimation =newTranslateAnimation(0, 100, 0, 0);
translateAnimation.tDuration(500);
translateAnimation.tInterpolator(this, android.le_interpolator);//设置动画插⼊器
translateAnimation.tFillAfter(true);//设置动画结束后保持当前的位置(即不返回到动画开始前的位
置)imageView.startAnimation(translateAnimation);
5.)t组合动画效果
xml⽅式:
android:duration="500"        android:fromAlpha="1.0"        android:toAlpha="0.0"/>
android:duration="500"        android:fromXScale="0.0"        android:fromYScale="0.0"
android:interpolator="@android:anim/decelerate_interpolator"        android:pivotX="50%"        androi
d:pivotY="50%"      android:repeatCount="1"        android:repeatMode="rever"        android:startOfft="0"        android:toXScale="1.5"      android:toYScale="1.5"/>
如何使⽤
AnimationSet animationSet = (AnimationSet) AnimationUtils.loadAnimation(this, R.anim.anim_t);
imageView.startAnimation(animationSet);
Java⽅式
AnimationSet animationSet =newAnimationSet(true);
Animation alphaAnimation =newAlphaAnimation(1.0f, 0.1f);
alphaAnimation.tDuration(500);//设置动画持续时间为500毫秒Animation scaleAnimation =newScaleAnimation(0.0f, 1.5f, 0.0f, 1.5f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIV
E_TO_SELF, 0.5f);
scaleAnimation.tDuration(500);//设置动画持续时间为500毫秒scaleAnimation.tRepeatMode(Animation.REVERSE);
scaleAnimation.tStartOfft(0);
scaleAnimation.tInterpolator(this, android.R.anim.decelerate_interpolator);//设置动画插⼊器
animationSet.addAnimation(alphaAnimation);
animationSet.addAnimation(scaleAnimation);
imageView.startAnimation(animationSet);
动画监听器Animation.AnimationListener:
有时可能我们要在动画的每个周期⾥⾯做不同的操作,这时候就要借助动画监听器了
alphaAnimation.tAnimationListener(new Animation.AnimationListener() {
@Override
publicvoid onAnimationStart(Animation animation) {
//动画开始时调⽤    }
@Override
publicvoid onAnimationEnd(Animation animation) {
//动画结束时调⽤    }
@Override
publicvoid onAnimationRepeat(Animation animation) {
//动画重复时调⽤    }
});
⼏种⾃带的动画插⼊器
AccelerateInterpolator 加速,开始时慢中间加速
DecelerateInterpolator 减速,开始时快然后减速
AccelerateDecelerateInterolator 先加速后减速,开始结束时慢,中间加速
AnticipateInterpolator 反向,先向相反⽅向改变⼀段再加速播放
AnticipateOvershootInterpolator 反向加超越,先向相反⽅向改变,再加速播放,会超出⽬的值然后缓慢移动⾄⽬的值BounceInterpolator 跳跃,快到⽬的值时值会跳跃,如⽬的值100,后⾯的值可能依次为85,77,70,80,90,100 CycleIinterpolator 循环,动画循环⼀定次数,值的改变为⼀正弦函数:Math.sin(2* mCycles* Math.PI* input) LinearInterpolator 线性,线性均匀改变
OvershootInterpolator超越,最后超出⽬的值然后缓慢改变到⽬的值
2、帧动画
Frame animation
其实就是多张图⽚构成的gif图⽚
在drawable⽂件下创建animation-list⽂件
如下

本文发布于:2023-05-11 06:33:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/882038.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:动画   效果   结束   设置   开始   位置   改变   缩放
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图