Android View动画(视图动画)

安卓中的动画有:视图动画(也叫补间动画,tween动画)、Drawable动画(也叫Frame动画、帧动画)和Property动画(属性动画)。

视图动画

在一个视图容器内执行一系列简单变换(位移、缩小放大、旋转、透明度),使用这个动画时,控件的点击的区域还是在原来的位置上,并不会因为视图移动而点击区域发生改变。

创建视图动画有两种方式:代码创建和xml。

java类名 xml关键字 描述信息
AlphaAnimation <alpha>  渐变透明度动画效果
RotateAnimation <rotate> 画面转移旋转动画效果
ScaleAnimation <scale>  渐变尺寸伸缩动画效果
TranslateAnimation <translate>  画面转换位置移动动画效果
AnimationSet <set>  一个持有其它动画元素alpha、scale、translate、rotate或者其它set元素的容器

Animation抽象类是所有补间动画类的基类,所以基类会提供一些通用的动画属性。所有视图动画都具备此属性,可以设置一个或多个。

xml属性 java方法 解释
android:detachWallpaper setDetachWallpaper(boolean) 是否在壁纸上运行
android:duration setDuration(long) 动画持续时间,毫秒为单位
android:fillAfter setFillAfter(boolean) 控件动画结束时是否保持动画最后的状态
android:fillBefore setFillBefore(boolean) 控件动画结束时是否还原到开始动画前的状态
android:fillEnabled setFillEnabled(boolean) 与android:fillBefore效果相同
android:interpolator setInterpolator(Interpolator) 设定插值器(指定的动画效果,譬如回弹等)
android:repeatCount setRepeatCount(int) 重复次数
android:repeatMode setRepeatMode(int) 重复类型有两个值,reverse表示倒序回放,restart表示从头播放
android:startOffset setStartOffset(long) 调用start函数之后等待开始运行的时间,单位为毫秒
android:zAdjustment setZAdjustment(int) 表示被设置动画的内容运行时在Z轴上的位置(top/bottom/normal),默认为normal

Alpha动画属性

xml属性 java方法 解释
android:fromAlpha AlphaAnimation(float fromAlpha, …) 动画开始的透明度(0.0到1.0,0.0是全透明,1.0是不透明)
android:toAlpha AlphaAnimation(…, float toAlpha) 动画结束的透明度,同上
AlphaAnimation alpha = new AlphaAnimation(float fromAlpha,float toAlpha)  两个参数,第一个参数是透明度起始值,第二个参数是透明度结束值。取值在0-1之间。

Rotate动画属性

xml属性 java方法 解释
android:fromDegrees RotateAnimation(float fromDegrees, …) 旋转开始角度,正代表顺时针度数,负代表逆时针度数
android:toDegrees RotateAnimation(…, float toDegrees, …) 旋转结束角度,正代表顺时针度数,负代表逆时针度数
android:pivotX RotateAnimation(…, float pivotX, …) 旋转起点X坐标(数值、百分数、百分数p,譬如50表示以当前View左上角坐标加50px为初始点、50%表示以当前View的左上角加上当前View宽高的50%做为初始点、50%p表示以当前View的左上角加上父控件宽高的50%做为初始点)
android:pivotY RotateAnimation(…, float pivotY) 缩放起点Y坐标,同上规律
RotateAnimation rotate = new RotateAnimation(float fromDegrees,float toDegrees);默认pivotX/pivotY (0,0)以最左上角为轴进行旋转

RotateAnimation rotate = new RotateAnimation(float fromDegrees,float toDegrees,int pivotXType,int pivotYType);默认ABSOLUTE

RotateAnimation rotate = new RotateAnimation(float fromDegrees,float toDegrees,int pivotXType,float pivotXValue,int pivotYType,float pivotYValue);

参数1:旋转开始角度;参数2:旋转的结束角度;参数3:X轴的旋转模式,可取值ABSOLUTE 、RELATIVE_TO_SELF、RELATIVE_TO_PARENT;参数4:X坐标的伸缩值;参数5:Y轴的旋转模式,可取值ABSOLUTE 、RELATIVE_TO_SELF、RELATIVE_TO_PARENT;参数6:Y坐标的伸缩值。

Scale动画属性

xml属性 java方法 解释
android:fromXScale ScaleAnimation(float fromX, …) 初始X轴缩放比例,1.0表示无变化
android:toXScale ScaleAnimation(…, float toX, …) 结束X轴缩放比例
android:fromYScale ScaleAnimation(…, float fromY, …) 初始Y轴缩放比例
android:toYScale ScaleAnimation(…, float toY, …) 结束Y轴缩放比例
android:pivotX ScaleAnimation(…, float pivotX, …) 缩放起点X轴坐标(数值、百分数、百分数p,譬如50表示以当前View左上角坐标加50px为初始点、50%表示以当前View的左上角加上当前View宽高的50%做为初始点、50%p表示以当前View的左上角加上父控件宽高的50%做为初始点)
android:pivotY ScaleAnimation(…, float pivotY) 缩放起点Y轴坐标,同上规律
ScaleAnimation scale = new ScaleAnimation(float fromX,float toX,float fromY,float toY) ;

ScaleAnimation scale = new ScaleAnimation(float fromX,float toX,float fromY,float toY,float pivotX,float pivotY) ;

ScaleAnimation scale = new ScaleAnimation(float fromX,float toX,float fromY,float toY,int pivotXType,float pivotXValue,int pivotYType,float pivotYValue) ;

参数1:起始X轴方向上的大小,取值0-1;参数2:结束X轴方向上的大小,取值0-1;参数3:起始Y轴方向上的大小,取值0-1;参数4:结束Y轴方向上的大小;参数5:X轴的缩放模式,RELATIVE_TO_SELEF以自己为标准、RELATIVE_TO_PARENT以父组件为标准、ABSOLUTE表示绝对位置;参数6:针对前一个参数的值,取值0-1之间;参数7和8同之前。

例:ScaleAnimation scale = new ScaleAnimation(1f,0f,1f,0f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f) ; 

Translate动画属性

xml属性 java方法 解释
android:fromXDelta TranslateAnimation(float fromXDelta, …) 起始点X轴坐标(数值、百分数、百分数p,譬如50表示以当前View左上角坐标加50px为初始点、50%表示以当前View的左上角加上当前View宽高的50%做为初始点、50%p表示以当前View的左上角加上父控件宽高的50%做为初始点)
android:fromYDelta TranslateAnimation(…, float fromYDelta, …) 起始点Y轴从标,同上规律
android:toXDelta TranslateAnimation(…, float toXDelta, …) 结束点X轴坐标,同上规律
android:toYDelta TranslateAnimation(…, float toYDelta) 结束点Y轴坐标,同上规律
Animation类的方法

Animation类的方法 解释
reset() 重置Animation的初始化
cancel() 取消Animation动画
start() 开始Animation动画
setAnimationListener(AnimationListener listener) 给当前Animation设置动画监听
hasStarted() 判断当前Animation是否开始
hasEnded() 判断当前Animation是否结束
补间动画只能给View使用,View中也有和动画相关的方法

View类的常用动画操作方法 解释
startAnimation(Animation animation) 对当前View开始设置的Animation动画
clearAnimation() 取消当View在执行的Animation动画

Drawable动画

Drawable动画就是Frame动画,它允许你实现像播放幻灯片一样的效果,这种动画的实质是Drawable,所以定义在res/drawable目录下。

xml和java代码都能实现

xml中使用:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="true" > true:表示执行一次,false:表示玄幻执行
	item:类似一帧的动画资源
    <item  
        android:drawable="" 
        android:duration=""></item>drawable:一个frame的Drawable资源;duration:一个frame显示多长时间
    

</animation-list>
AnimationDrawable的start()方法不能再Activity的onCreate方法中调用,因为AnimationDrawable还未完全附着到Window上,所以最好的调用时机是onWindowFocusChanged()方法中

mIvAnim.setBackgroundResource(R.drawable.drawable_anim);
AnimationDrawable drawable = (AnimationDrawable) mIvAnim.getBackground();
drawable.start();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值