动画学习android,Android动画学习

本文详细介绍了Android中的两种动画类型:Tween动画和Frame动画。Tween动画包括AlphaAnimation、ScaleAnimation、RotateAnimation、TranslateAnimation和AnimationSet,用于实现对象的平移、缩放、旋转和透明度变化。Frame动画则通过顺序播放静态图片来创建逐帧动画效果。文章还提供了XML和Java代码示例,展示了如何创建和应用这些动画。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android 动画大概可以分为两类,一类是 Tween 动画(补间动画),即通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果;第二类是 Frame 动画,即顺序播放设置好的每一个图像(逐帧动画)。

补间动画

Animation代表抽象的动画类,它的实现类有如下几个:AlphaAnimation、ScaleAnimation、RotateAnimation、TranslateAnimation、AnimationSet。动画类型标签java实现方式渐变透明度动画alphaAlphaAnimation

渐变尺寸伸缩动画scaleScaleAnimation

旋转动画rotateRotateAnimation

位移变化动画transtateTranslateAnimation

渐变透明度动画setAnimationSetalpha属性说明fromAlpha开始透明度(从0.0 –1.0 ,0.0表示全透明,1.0表示完全不透明)

toAlpha结束透明度(从0.0 –1.0 ,0.0表示全透明,1.0表示完全不透明)scale属性说明fromXScale起始的X方向上相对自身的缩放比例,浮点值,比如1.0代表自身无变化,0.5代表起始时缩小一倍,2.0代表放大一倍

toXScale结尾的X方向上相对自身的缩放比例,浮点值

fromYScale起始的Y方向上相对自身的缩放比例,浮点值

toYScale结尾的Y方向上相对自身的缩放比例,浮点值

pivotX缩放起点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p,当为数值时,表示在当前View的左上角,即原点处加上50px,做为起始缩放点;如果是50%,表示在当前控件的左上角加上自己宽度的50%做为起始点;如果是50%p,那么就是表示在当前的左上角加上父控件宽度的50%做为起始点x轴坐标

pivotY缩放起点Y轴坐标(同pivotX)rotate属性说明fromDegrees开始旋转的角度位置,正值代表顺时针方向度数,负值代码逆时针方向度数

toDegrees结束时旋转到的角度位置,正值代表顺时针方向度数,负值代码逆时针方向度数

pivotX控件的左上角即为控件的坐标原点,这里的起始点是在控件的原点的基础上向X轴加上指定的像素,做为起始点(可设置具体值也可设置百分比)

pivotY控件的左上角即为控件的坐标原点,这里的起始点是在控件的原点的基础上向Y轴加上指定的像素,做为起始点(可设置具体值也可设置百分比)transtate属性说明fromXDelta起始点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p(同pivotX)

fromYDelta起始点Y轴从标,可以是数值、百分数、百分数p 三种样式(同pivotY)

toXDelta结束点X轴坐标

toYDelta结束点Y轴坐标set

set标签无自身的动画属性,只有继承Animation的属性,这是每一个动画标签都有的属性,而set标签就是将多个动画标签放到一起组合的动画。属性说明duration动画持续时间

fillAfter动画结束后是否保挂当前透明度

fillBefore还原到开始动画前的状态

repeatCount重复次数

repeatMode重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果

使用动画标签

在res文件夹下,新建一个anim文件夹,然后再新建一个.xml动画文件,如下:

android:duration="3000"

android:fillAfter="true">

android:fromAlpha="0.0"

android:toAlpha="1.0"/>

android:fromXScale="0.0"

android:toXScale="1.4"

android:fromYScale="0.0"

android:toYScale="1.4"

android:pivotX="50%"

android:pivotY="50%"/>

android:fromDegrees="0"

android:toDegrees="720"

android:pivotX="50%"

android:pivotY="50%"/>

代码使用动画Animation scaleAnimation = AnimationUtils.loadAnimation(this, R.anim.动画文件名);从XML文件中获取动画

控件.startAnimation(scaleAnimation);

逐帧动画

逐帧动画也就是依次显示静态图片,就是播放电影一样,通常我们使用xml的形式去定义,当然也可以使用代码控制。在drawable文件夹下新建一个文件frame.xml,而不是anim文件夹

```android //oneshot:是否只播放一次 //duration:这一帧持续的时间

xml中直接使用

```xml

android:id="@+id/iv"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:layout_margin="10dp"

android:src="@drawable/frame" />

代码控制imageView = (ImageView)findViewById(R.id.iv);

AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getDrawable();

animationDrawable.start();

animationDrawable.stop();

在代码中定义动画资源AnimationDrawable anim = new AnimationDrawable();

for (int i = 1; i <= 6; i++) {

int id = getResources().getIdentifier("lottery_" + i, "mipmap", getPackageName());

Drawable drawable = getResources().getDrawable(id);

anim.addFrame(drawable, 200);//添加帧

}

anim.setOneShot(false);//设置为循环播放

imageView.setImageDrawable(anim);

anim.start();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值