Android中的屬性動畫

在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();
	}

}
運行結果:






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章