Android中补间动画的实现之二

上篇博文中点击打开链接我们在代码中实现了补间动画,那么这篇博文中我们就使用布局文件实现补间动画。

实现步骤:

①在res文件夹下新建文件夹anim(必须是anim)

②在anim文件夹下创建不同效果的布局文件:

alpha:淡入淡出

rotate:旋转

scale:缩放

translate:平移
set:组合

③在代码中引用我们定义的布局文件

一、实现不同效果的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<!-- 淡入淡出 -->
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="0"
    android:toAlpha="1.0"
    android:duration="3000"
    android:repeatMode="restart"
    android:repeatCount="infinite">
    
</alpha>
<?xml version="1.0" encoding="utf-8"?>
<!-- 旋转 -->
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="-360"
    android:pivotX="0.5"
    android:pivotY="0.5"
    android:duration="3000"
    android:repeatCount="infinite"
    >
    <!-- 
    android:pivotX="0.5"
    android:pivotY="0.5"
    用来确定中心点的,如果给出的值在0.0-1.0之间(0%-100%),表示以自身作为参照点
    如果给出的值在0.0p-1.0p之间(0%p-100%p) 表示以父控件作为参照点
     -->

</rotate>
<?xml version="1.0" encoding="utf-8"?>
<!-- 平移 -->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="3000"
    android:fromXDelta="10"
    android:fromYDelta="10"
    android:repeatMode="restart"
    android:toXDelta="50"
    android:toYDelta="50" >

<!--     当前图片所处位置作为原点
		fromXDelta:在原点的基础上向右平移10个像素
		fromYDelta:在原点的基础上向下平移10个像素
 -->

</translate>
<?xml version="1.0" encoding="utf-8"?>
<!-- 缩放 -->
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXScale="0.0"
    android:toXScale="1"
    android:fromYScale="0.0"
    android:toYScale="1"
    
    android:duration="3000"
    android:repeatMode="restart"
    >
    

</scale>
<?xml version="1.0" encoding="utf-8"?>
<!-- 组合 -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
    >
<alpha 
    android:fromAlpha="0.0"
    android:toAlpha="1"
    android:duration="2000"/>
<rotate 
    android:fromDegrees="0"
    android:toDegrees="-360"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="2000"/>    

</set>
<!-- 透明度+旋转 -->

二、在代码中的实现:

package com.example.text03;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;

public class MainActivity extends Activity {

	private ImageView iv;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		iv = (ImageView) findViewById(R.id.iv);
	}
	//淡入淡出
	public void dan(View view) {
		//将一个资源转成了一个Animation对象
		iv.startAnimation(AnimationUtils.loadAnimation(this, R.anim.alpha_animation));
	}
	//旋转
	public void turn(View view) {
		iv.startAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate_animation));
	}
	//平移
	public void move(View view) {
		iv.startAnimation(AnimationUtils.loadAnimation(this, R.anim.translate_animation));
	}
	//缩放
	public void suofang(View view) {
		iv.startAnimation(AnimationUtils.loadAnimation(this, R.anim.scale_animation));
	}
	//组合
	public void zuhe(View view) {
		iv.startAnimation(AnimationUtils.loadAnimation(this, R.anim.set_animation));
	}

}

运行结果:







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值