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

}
运行结果:






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值