在Android中除了我們之前提過的幀動畫,補間動畫,還有一個很重要的動畫,就是屬性動畫。它可以設置控件的漸變過程,
可以設置圖片的在X軸上的拉伸,在Y軸上的拉伸,以及在X和Y軸上的拉伸
實現步驟:
①在res文件夾下新建一個文件夾animator(必須是animator)
②子animator文件夾中創建不同類型的xml文件
③在代碼中實現佈局的引用
一、animator文件夾下的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<!-- 在X軸上的拉伸 -->
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:propertyName="scaleX"
android:valueType="floatType"
android:valueFrom="1.0"
android:valueTo="1.5"
android:duration="4000"
>
</objectAnimator>
<?xml version="1.0" encoding="utf-8"?>
<!-- 在Y軸上的拉伸 -->
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:propertyName="scaleY"
android:valueType="floatType"
android:valueFrom="1.0"
android:valueTo="2.0"
android:duration="4000"
>
</objectAnimator>
<?xml version="1.0" encoding="utf-8"?>
<!-- 在X和Y軸上的拉伸 -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
>
<objectAnimator
android:propertyName="scaleX"
android:valueType="floatType"
android:valueFrom="1.0"
android:valueTo="1.5"
android:duration="4000"/>
<objectAnimator
android:propertyName="scaleY"
android:valueType="floatType"
android:valueFrom="1.0"
android:valueTo="1.5"
android:duration="4000"/>
<!-- 添加一個旋轉效果
rotation:沿中心進行旋轉
rotationX:沿X軸進行旋轉
rotationY:沿Y軸進行旋轉
-->
<objectAnimator
android:propertyName="rotationX"
android:valueType="floatType"
android:valueFrom="0"
android:valueTo="360"
android:duration="4000"/>
<objectAnimator
android:propertyName="rotationY"
android:valueType="floatType"
android:valueFrom="0"
android:valueTo="360"
android:duration="4000"/>
</set>
二、在代碼中的具體引用與實現:
package com.example.text04;
import android.os.Bundle;
import android.animation.Animator;
import android.animation.AnimatorInflater;
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView tv;
private ImageView iv;
private ObjectAnimator objectAnimator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
iv = (ImageView) findViewById(R.id.iv);
objectAnimator = (ObjectAnimator) AnimatorInflater.loadAnimator(this, R.animator.background_animator);
//將動畫應用到具體的某個組件上
objectAnimator.setTarget(tv);
//啓動動畫
objectAnimator.start();
}
//橫向拉伸
public void clickX(View view){
objectAnimator = (ObjectAnimator) AnimatorInflater.loadAnimator(this, R.animator.scalx_animator);
objectAnimator.setTarget(iv);
objectAnimator.start();
}
//縱向拉伸
public void clickY(View view){
objectAnimator = (ObjectAnimator) AnimatorInflater.loadAnimator(this, R.animator.scaly_animator);
objectAnimator.setTarget(iv);
objectAnimator.start();
}
//X和Y軸上的拉伸
public void clickXY(View view){
Animator animator = AnimatorInflater.loadAnimator(this, R.animator.scalxy_animator);
animator.setTarget(iv);
animator.start();
}
}
運行結果: