上篇博文中點擊打開鏈接我們在代碼中實現了補間動畫,那麼這篇博文中我們就使用佈局文件實現補間動畫。
實現步驟:
①在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));
}
}
運行結果: