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

}
运行结果:






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