上篇博文中点击打开链接我们在代码中实现了补间动画,那么这篇博文中我们就使用布局文件实现补间动画。
实现步骤:
①在res文件夹下新建文件夹anim(必须是anim)
②在anim文件夹下创建不同效果的布局文件:
alpha:淡入淡出
rotate:旋转
scale:缩放
translate:平移
set:组合
③在代码中引用我们定义的布局文件
一、实现不同效果的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<!-- 淡入淡出 -->
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="0"
android:toAlpha="1.0"
android:duration="3000"
android:repeatMode="restart"
android:repeatCount="infinite">
</alpha>
<?xml version="1.0" encoding="utf-8"?>
<!-- 旋转 -->
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="-360"
android:pivotX="0.5"
android:pivotY="0.5"
android:duration="3000"
android:repeatCount="infinite"
>
<!--
android:pivotX="0.5"
android:pivotY="0.5"
用来确定中心点的,如果给出的值在0.0-1.0之间(0%-100%),表示以自身作为参照点
如果给出的值在0.0p-1.0p之间(0%p-100%p) 表示以父控件作为参照点
-->
</rotate>
<?xml version="1.0" encoding="utf-8"?>
<!-- 平移 -->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="3000"
android:fromXDelta="10"
android:fromYDelta="10"
android:repeatMode="restart"
android:toXDelta="50"
android:toYDelta="50" >
<!-- 当前图片所处位置作为原点
fromXDelta:在原点的基础上向右平移10个像素
fromYDelta:在原点的基础上向下平移10个像素
-->
</translate>
<?xml version="1.0" encoding="utf-8"?>
<!-- 缩放 -->
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="0.0"
android:toXScale="1"
android:fromYScale="0.0"
android:toYScale="1"
android:duration="3000"
android:repeatMode="restart"
>
</scale>
<?xml version="1.0" encoding="utf-8"?>
<!-- 组合 -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
>
<alpha
android:fromAlpha="0.0"
android:toAlpha="1"
android:duration="2000"/>
<rotate
android:fromDegrees="0"
android:toDegrees="-360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="2000"/>
</set>
<!-- 透明度+旋转 -->
二、在代码中的实现:
package com.example.text03;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
public class MainActivity extends Activity {
private ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView) findViewById(R.id.iv);
}
//淡入淡出
public void dan(View view) {
//将一个资源转成了一个Animation对象
iv.startAnimation(AnimationUtils.loadAnimation(this, R.anim.alpha_animation));
}
//旋转
public void turn(View view) {
iv.startAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate_animation));
}
//平移
public void move(View view) {
iv.startAnimation(AnimationUtils.loadAnimation(this, R.anim.translate_animation));
}
//缩放
public void suofang(View view) {
iv.startAnimation(AnimationUtils.loadAnimation(this, R.anim.scale_animation));
}
//组合
public void zuhe(View view) {
iv.startAnimation(AnimationUtils.loadAnimation(this, R.anim.set_animation));
}
}
运行结果: