位移,缩放,旋转,透明度 动画

本文详细介绍了Android中的四种动画:AlphaAnimation(透明度动画)、ScaleAnimation(缩放动画)、TranslateAnimation(位移动画)和RotateAnimation(旋转动画)。通过具体的代码示例展示了如何设置和使用这些动画效果。
android中提供了4中动画:   
AlphaAnimation 透明度动画效果   
ScaleAnimation 缩放动画效果   
TranslateAnimation 位移动画效果   
RotateAnimation 旋转动画效果   
  
本节讲解ScaleAnimation 动画,   
ScaleAnimation(float fromX, float toX, float fromY, float toY,int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)   
参数说明:   
  
复制代码 代码如下:  
  
float fromX 动画起始时 X坐标上的伸缩尺寸   
float toX 动画结束时 X坐标上的伸缩尺寸   
float fromY 动画起始时Y坐标上的伸缩尺寸   
float toY 动画结束时Y坐标上的伸缩尺寸   
int pivotXType 动画在X轴相对于物件位置类型   
float pivotXValue 动画相对于物件的X坐标的开始位置   
int pivotYType 动画在Y轴相对于物件位置类型   
float pivotYValue 动画相对于物件的Y坐标的开始位置   
  
  
代码:   
  
复制代码 代码如下:  
  
public class MainActivity extends Activity {   
ImageView image;   
Button start;   
Button cancel;   
@Override   
public void onCreate(Bundle savedInstanceState) {   
super.onCreate(savedInstanceState);   
setContentView(R.layout.activity_main);   
image = (ImageView) findViewById(R.id.main_img);   
start = (Button) findViewById(R.id.main_start);   
cancel = (Button) findViewById(R.id.main_cancel);   
/** 设置缩放动画 */   
final ScaleAnimation animation =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,   
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);   
animation.setDuration(2000);//设置动画持续时间   
/** 常用方法 */   
//animation.setRepeatCount(int repeatCount);//设置重复次数   
//animation.setFillAfter(boolean);//动画执行完后是否停留在执行完的状态   
//animation.setStartOffset(long startOffset);//执行前的等待时间   
start.setOnClickListener(new OnClickListener() {   
public void onClick(View arg0) {   
image.setAnimation(animation);   
/** 开始动画 */   
animation.startNow();   
}   
});   
cancel.setOnClickListener(new OnClickListener() {   
public void onClick(View v) {   
/** 结束动画 */   
animation.cancel();   
}   
});   
}   
}  
本节讲解ScaleAnimation 动画,   
ScaleAnimation(float fromX, float toX, float fromY, float toY,int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)   
参数说明:   
复制代码 代码如下:  
float fromX 动画起始时 X坐标上的伸缩尺寸   
float toX 动画结束时 X坐标上的伸缩尺寸   
float fromY 动画起始时Y坐标上的伸缩尺寸   
float toY 动画结束时Y坐标上的伸缩尺寸   
int pivotXType 动画在X轴相对于物件位置类型   
float pivotXValue 动画相对于物件的X坐标的开始位置   
int pivotYType 动画在Y轴相对于物件位置类型   
float pivotYValue 动画相对于物件的Y坐标的开始位置   
  
代码:   
复制代码 代码如下:  
public class MainActivity extends Activity {   
ImageView image;   
Button start;   
Button cancel;   
@Override   
public void onCreate(Bundle savedInstanceState) {   
super.onCreate(savedInstanceState);   
setContentView(R.layout.activity_main);   
image = (ImageView) findViewById(R.id.main_img);   
start = (Button) findViewById(R.id.main_start);   
cancel = (Button) findViewById(R.id.main_cancel);   
/** 设置缩放动画 */   
final ScaleAnimation animation =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,   
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);   
animation.setDuration(2000);//设置动画持续时间   
/** 常用方法 */   
//animation.setRepeatCount(int repeatCount);//设置重复次数   
//animation.setFillAfter(boolean);//动画执行完后是否停留在执行完的状态   
//animation.setStartOffset(long startOffset);//执行前的等待时间   
start.setOnClickListener(new OnClickListener() {   
public void onClick(View arg0) {   
image.setAnimation(animation);   
/** 开始动画 */   
animation.startNow();   
}   
});   
cancel.setOnClickListener(new OnClickListener() {   
public void onClick(View v) {   
/** 结束动画 */   
animation.cancel();   
}   
});   
}   
}  
本节讲解RotateAnimation 动画,   
RotateAnimation (float fromDegrees, float toDegrees, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)   
参数说明:   
float fromDegrees:旋转的开始角度。   
float toDegrees:旋转的结束角度。   
int pivotXType:X轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。   
float pivotXValue:X坐标的伸缩值。   
int pivotYType:Y轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。   
float pivotYValue:Y坐标的伸缩值。   
代码:   
<div class="codetitle"><span style="CURSOR: pointer"><u>复制代码</u></span> 代码如下:</div><div id="code17269" class="codebody">  
public class MainActivity extends Activity {   
ImageView image;   
Button start;   
Button cancel;   
@Override   
public void onCreate(Bundle savedInstanceState) {   
super.onCreate(savedInstanceState);   
setContentView(R.layout.activity_main);   
image = (ImageView) findViewById(R.id.main_img);   
start = (Button) findViewById(R.id.main_start);   
cancel = (Button) findViewById(R.id.main_cancel);   
/** 设置旋转动画 */   
final RotateAnimation animation =new RotateAnimation(0f,360f,Animation.RELATIVE_TO_SELF,   
0.5f,Animation.RELATIVE_TO_SELF,0.5f);   
animation.setDuration(3000);//设置动画持续时间   
/** 常用方法 */   
//animation.setRepeatCount(int repeatCount);//设置重复次数   
//animation.setFillAfter(boolean);//动画执行完后是否停留在执行完的状态   
//animation.setStartOffset(long startOffset);//执行前的等待时间   
start.setOnClickListener(new OnClickListener() {   
public void onClick(View arg0) {   
image.setAnimation(animation);   
/** 开始动画 */   
animation.startNow();   
}   
});   
cancel.setOnClickListener(new OnClickListener() {   
public void onClick(View v) {   
/** 结束动画 */   
animation.cancel();   
}   
});   
}   
}
public class MainActivity extends Activity {
ImageView image;
Button start;
Button cancel;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageView) findViewById(R.id.main_img);
start = (Button) findViewById(R.id.main_start);
cancel = (Button) findViewById(R.id.main_cancel);
/** 设置透明度渐变动画 */
final AlphaAnimation animation = new AlphaAnimation(1, 0);
animation.setDuration(2000);//设置动画持续时间
/** 常用方法 */
//animation.setRepeatCount(int repeatCount);//设置重复次数
//animation.setFillAfter(boolean);//动画执行完后是否停留在执行完的状态
//animation.setStartOffset(long startOffset);//执行前的等待时间
start.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
image.setAnimation(animation);
/** 开始动画 */
animation.startNow();
}
});
cancel.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
/** 结束动画 */
animation.cancel();
}
});
}
}
float fromXDelta 动画开始的点离当前View X坐标上的差值 
float toXDelta 动画结束的点离当前View X坐标上的差值
float fromYDelta 动画开始的点离当前View Y坐标上的差值
float toYDelta 动画开始的点离当前View Y坐标上的差值

animation.setDuration(long durationMillis);//设置动画持续时间
animation.setRepeatCount(int i);//设置重复次数
animation.setRepeatMode(Animation.REVERSE);//设置反方向执行

android:duration:运行动画的时间
android:repeatCount:定义动画重复的时间

public
class MainActivity extends Activity { ImageView image; Button start; Button cancel; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); image = (ImageView) findViewById(R.id.main_img); start = (Button) findViewById(R.id.main_start); cancel = (Button) findViewById(R.id.main_cancel); /** 设置位移动画 向右位移150 */ final TranslateAnimation animation = new TranslateAnimation(0, 150,0, 0); animation.setDuration(2000);//设置动画持续时间 animation.setRepeatCount(2);//设置重复次数 animation.setRepeatMode(Animation.REVERSE);//设置反方向执行 start.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { image.setAnimation(animation); /** 开始动画 */ animation.startNow(); } }); cancel.setOnClickListener(new OnClickListener() { public void onClick(View v) { /** 结束动画 */ animation.cancel(); } }); } }

 

转载于:https://www.cnblogs.com/xiaoli3007/p/4335277.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值