您的位置:首页 > 移动开发 > Android开发

Android笔记(六十四) android中的动画——补间动画(tweened animation)

2015-12-23 03:03 459 查看
补间动画就是只需要定义动画开始和结束的位置,动画中间的变化由系统去补齐。

补间动画由一下四种方式:

1.AplhaAnimation——透明度动画效果

2.ScaleAnimation ——缩放动画效果

3.TranslateAnimation——位移动画效果

4.RotateAnimation——旋转动画效果

1.AplhaAnimation——透明度动画效果

AplhaAnimation的参数:

fromAlpha:动画开始时的透明度,0.0表示完全透明

toAlpha:动画结束时的透明度,1.0表示完全不透明

package cn.lixyz.animator;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener {

private ImageView iv;
private Button alpha;

private AlphaAnimation alphaAnimation;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

initView();
}

private void initView() {
iv = (ImageView) findViewById(R.id.image);
alpha = (Button) findViewById(R.id.alpha);
alpha.setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.alpha:
alphaAnimation = new AlphaAnimation(0.1f, 1);
alphaAnimation.setDuration(1000);
alphaAnimation.setRepeatCount(3);
alphaAnimation.setRepeatMode(Animation.REVERSE);
iv.startAnimation(alphaAnimation);
alphaAnimation.setAnimationListener(new AnimationListener() {

@Override
public void onAnimationStart(Animation animation) {
Log.d("TTTT", "动画开始");
}

@Override
public void onAnimationRepeat(Animation animation) {
Log.d("TTTT", "动画重复");

}

@Override
public void onAnimationEnd(Animation animation) {
Log.d("TTTT", "动画结束");

}
});

break;
}
}
}


常用属性:

setRepeatCount(int repeatCount)——设置重复次数

setFillAfter(boolean)——动画执行完后是否停留在执行完的状态

setStartOffset(long startOffset)——执行前的等待时间

2.ScaleAnimation ——缩放动画效果

ScakeAnimation的参数:

fromX:动画起始时X坐标上的伸缩尺寸

toX:动画结束时X坐标上的伸缩尺寸

fromY:动画起始时Y坐标上的伸缩尺寸

toY:动画结束时Y坐标上的伸缩尺寸

pivotXType:动画在X轴相对于物件位置类型

pivotXValue:动画相对于物件的X坐标的开始位置

pivotYType:动画在Y轴相对于物件位置类型

pivotYValue:动画相对于物件的Y坐标的开始位置

package cn.lixyz.animator;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.ScaleAnimation;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener {

private ImageView iv;
private Button scale;

private ScaleAnimation scaleAnimation;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

initView();
}

private void initView() {
iv = (ImageView) findViewById(R.id.image);
scale = (Button) findViewById(R.id.scale);
scale.setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.scale:
scaleAnimation = new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f, Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
scaleAnimation.setDuration(3000);
iv.startAnimation(scaleAnimation);

break;
}
}
}


常用属性:

setRepeatCount(int repeatCount)——设置重复次数

setFillAfter(boolean)——动画执行完后是否停留在执行完的状态

setStartOffset(long startOffset)——执行前的等待时间

3.TranslateAnimation——位移动画效果

TranslateAnimation的参数

fromXDelta: 动画开始的点离当前View X坐标上的差值

toXDelta: 动画结束的点离当前View X坐标上的差值

fromYDelta: 动画开始的点离当前View Y坐标上的差值

toYDelta动画开始的点离当前View Y坐标上的差值

package cn.lixyz.animator;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener {

private ImageView iv;
private Button transla;

private TranslateAnimation translaAnimation;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

initView();
}

private void initView() {
iv = (ImageView) findViewById(R.id.image);
transla = (Button) findViewById(R.id.transla);
transla.setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.transla:
translaAnimation = new TranslateAnimation(0, 150, 0, 0);
translaAnimation.setDuration(1000);
iv.startAnimation(translaAnimation);
break;
}
}
}


常用属性:

animation.setDuration(long durationMillis)——设置动画持续时间

animation.setRepeatCount(int i)——设置重复次数

animation.setRepeatMode(Animation.REVERSE)——设置反方向执行

4.RotateAnimation——旋转动画效果

RotateAnimation的参数:

fromDegrees——旋转的开始角度。

toDegrees——旋转的结束角度。

pivotXType——X轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

pivotXValue——X坐标的伸缩值。

pivotYType——Y轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

pivotYValue——Y坐标的伸缩值。

package cn.lixyz.animator;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener {

private ImageView iv;
private Button rotate;

private RotateAnimation rotateAnimation;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

initView();
}

private void initView() {
iv = (ImageView) findViewById(R.id.image);
rotate = (Button) findViewById(R.id.rotate);
rotate.setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.rotate:
rotateAnimation = new RotateAnimation(0, 180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
0.5f);
rotateAnimation.setDuration(2000);
iv.startAnimation(rotateAnimation);

break;
}
}
}


常用方法:

animation.setRepeatCount(int repeatCount)——设置重复次数

animation.setFillAfter(boolean)——动画执行完后是否停留在执行完的状态

animation.setStartOffset(long
startOffset)——执行前的等待时间

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: