在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();
}
}
运行结果: