一 : Tween Animation变换动画
Alpha:渐变透明动画
scale:渐变尺寸的缩放动画
Translate:位置移动动画
Rotate:旋转动画
共同属性:
Durattion:动画持续时间
fillAfter :设置true,动画转化在动画结束后被应用
fillbefore: 设置true,动画转化在动画开始前被应用
interpolator:动画插入器(加速、减速)
repetCount:动画持续次数
repateMode:顺序重复、倒叙重复
startOffset:动画之间的时间间隔
创建动画的两种方式:
java代码创建
Animation alpha = new Animation(0.1f,1.0f);
alpha.setDuration(5000);
img.startAnimation(aplha);
加载布局文件:
Animation scale =AnimationUtils.loadAnimation(TweenActivity.this, R.anim.scale_anim);
img.startAnimation(scale);
<1>:AlphaAnimation透明度动画
1:fromAlpha:动画起始时透明度
2:toAlpha:动画终止时透明度
0.0 完全透明
1.0完全不透明
布局文件
<alpha
android:duration:"1000"
android:fromAlpha:"0.1"
android:toAlpha:"1.0"/>
</alpha>
<2>:ScaleAnimation缩放动画
1:fromX, toX分别是起始和结束时X坐标上的伸缩尺寸
2:fromY, toY分别是起始和结束Y 坐标上的伸缩尺寸
3:pivotX,pivotY分别为伸缩动画相对x,y坐标开始的位置
<scale
android:duration="2000"
android:fillAfter="false"
android:fromXScale="0.0"
android:fromYScale="0.0"
android:interpolator ="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.0"
android:toYScale="1.0"/>
</scale>
<3>:TranslateAnimation位移动画
1:fromXDelta, fromYDelta分别是起始时X, Y的坐标
2:toXDelta, toYDelta分别是结束时X, Y的坐标
<translate
android:duration="1000"
android:fromXDelta="10"
android:fromYDelta="10"
android:toXDelta="100"
android:toYDelta="100"
/>
<4>:RotateAnimation旋转动画
1:fromDegrees起始角度
2:toDegrees终止的角度
3:pivotX, pivotY分别为旋转动画相对于xy坐标开始的位置
<rotate
android:duration="1000"
android:fromDegress="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toDegress="+360"
/>
组合动画
续播一:两个加载器,并给第一个动画设置监听器(复写三个方法,在onAnimationEnd()中开启第二个动画的加载器)
Animation loadAnimation = AnimationUtils.loadAnimation(R.anim.translate);
image.startAnimation(loadAnimation);
Animation loadAnimation2 = AnimationUtils.loadAnimation(R.anim.rotate);
loadAnimation.setAnimationListener(new AnimationListener(){
public void onAnimationStart(Animation arg0){}
public void onAnimationRepet(Animation arg0){}
public void onAnimationEnd(Animation arg0){
image.startAnimation(loadAnimation2);
}
});
续播2:写一个动画集AnimationSet,在定义动画A和B,为动画B设置StartOffset,其值就是当前一个动画播放所需要的时间。
<alpha
android:duration:"3000"
android:fromAlpha:"0.1"
android:toAlpha:"1.0"/>
<alpha
android:duration:"3000"
android:startOffset="3000"
android:fromAlpha:"1.0"
android:toAlpha:"0.2"/>
循环播放动画的实现
AlphaAnimation alphaAnimation = new AlphaAnimation(0.1f,1.0f);
alphaAnimation.setDuration(100);
alphaAnimation.setRepeatCount(10);
//倒叙重复REVERSE 正序重复RESTART
alphaAnimation.setRepeatMode(Animation.REVERSE);
image.startAnimation(alphaAnimation);
Acitivity 切换动画
Intent intent = new Intent(MainActivity.this, MainActivity2.class);
startActivity(intent);
overridePendingTransition(R.anim.zoom_in, R.anim_zoom_out);
//zoom_in
<scale
android:duration="1000"
android:fromXScale="0.1"
android:fromYScale="0.1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.0"
android:toYScale="1.0"/>
<alpha
android:duration="1000"
android:fromAlpha="0"
android:toAlpha="1.0"/>
//zoom_out
< scale
android:duration ="@android:integer/config_mediumAnimTime"
android:fromXScale= "1.0"
android:fromYScale= "1.0"
android:pivotX= "50%"
android:pivotY= "50%"
android:toXScale= "0.1"
android:toYScale= "0.1" />
<alpha
android:duration ="@android:integer/config_mediumAnimTime"
android:fromAlpha= "0"
android:toAlpha= "1.0" />
二: Frame Animation帧动画
image.setImageResource(R.drawable. anim_list);
< animation-list xmlns:android ="http://schemas.android.com/apk/res/android" >
<item
android:drawable= "@drawable/one"
android:duration= "500" />
<item
android:drawable= "@drawable/two"
android:duration= "500" />
<item
android:drawable= "@drawable/three"
android:duration= "500" />
<item
android:drawable= "@drawable/four"
android:duration= "500" />
<item
android:drawable= "@drawable/five"
android:duration= "500" />
<item
android:drawable= "@drawable/six"
android:duration= "500" />
</ animation-list>
三:Layout Animation 布局动画
为ViewGroups添加动画使用LayoutAnimationController
随机散列的ListView
public class ListActivity extends Activity{
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. list_layout);
listView=(ListView) findViewById(R.id. listView);
List<String>list= new ArrayList<String>();
for( int i=0;i<20;i++)
{
list.add( "ReliaM" +i);
}
ArrayAdapter<String>adapter= new ArrayAdapter<String>(this , android.R.layout. simple_list_item_1, list);
listView.setAdapter(adapter);
LayoutAnimationController lac= new LayoutAnimationController(AnimationUtils.loadAnimation( this, R.anim.zoom_in ));
lac.setOrder(LayoutAnimationController. ORDER_NORMAL);
listView.setLayoutAnimation(lac);
listView.startLayoutAnimation();
}
}