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

Android 动画

2015-06-19 14:57 417 查看
//变换动画   Tween Animation

Alpha        渐变透明度动画

Scale        渐变尺寸缩放动画

Translate 位置移动动画

Rotate      旋转动画

公共属性 :Duration     动画持续时间(单位:毫秒)

                  fillAfter        设置为True,动画转化在动画结束后被应用

                  fillBefore    设置为true, 动画转化在动画开始前被应用

                 interpolator  动画插入器(加速,减速插入器)

                repeatCount   动画重复的次数

                repeatMode   顺序重复/倒序重读

                startOffset      动画之间的时间间隔

//透明度渐变特效

private TextView AnimationTXT;
    
    private Button BtnAnimation;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        AnimationTXT=(TextView) findViewById(R.id.id_AnimationTXT);
        BtnAnimation=(Button) findViewById(R.id.id_Btn);
        
        BtnAnimation.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                //透明度渐变动画
                Animation alpAnimation=new AlphaAnimation(0.1f, 1.0f);//构造函数创建透明度动画.参数:动画开始时透明度,动画结束时透明度  
                alpAnimation.setDuration(5000);//动画持续事件   毫秒
                alpAnimation.setRepeatCount(10);//动画循环次数
                AnimationTXT.startAnimation(alpAnimation);//启动动画
                
            }
        });
    }

//大小渐变特效
XML文件

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<scale
android:duration="5000"  //动画持续时间
android:fillAfter="false" //动画结束后是否保留大小
android:fromXScale="0.0"  //动画开始的X
android:fromYScale="0.0"  //动画开始的Y
android:toXScale="1.0"    //动画结束的X
android:toYScale="1.0"    //动画结束的Y
android:interpolator="@android:anim/accelerate_decelerate_interpolator" //内置动画变速器
android:pivotX="50%" //动画的中心点X
android:pivotY="50%" //动画的中心店Y
>
</scale>

</set>
代码
Animation scaleAnimation=AnimationUtils.loadAnimation(MainActivity.this, R.anim.scale);
mImageView.startAnimation(scaleAnimation);

//位移动画特效
XML

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

<translate
android:duration="5000"  //动画过程时间
android:fromXDelta="0"   //动画开始时X坐标
android:fromYDelta="0"   //动画开始时Y坐标
android:toXDelta="100"   //动画结束时X坐标
android:toYDelta="100" > //动画结束时Y坐标
</translate>

</set>
代码
Animation TransAnimation=AnimationUtils.loadAnimation(MainActivity.this, R.anim.transtate);
mImageView.startAnimation(TransAnimation);

//旋转动画特效
XML

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:duration="5000" //动画运行时间
android:fromDegrees="0" //旋转开始的角度
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"//中心点
android:pivotY="50%"//中心点
android:toDegrees="+360" //旋转结束的角度
/>

</set>

代码
Animation RotateAnimation=AnimationUtils.loadAnimation(MainActivity.this, R.anim.rotate);
mImageView.startAnimation(RotateAnimation);

//组合动画              案例   动画A和动画B   先播放动画A  当动画A播放完毕后播放动画B

Animation TransAnimation=AnimationUtils.loadAnimation(MainActivity.this, R.anim.transtate);//动画A
mImageView.startAnimation(TransAnimation);

final Animation RotateAnimation=AnimationUtils.loadAnimation(MainActivity.this, R.anim.rotate);//动画B

TransAnimation.setAnimationListener(new AnimationListener() {

@Override
public void onAnimationStart(Animation animation) {
// TODO 自动生成的方法存根

}

@Override
public void onAnimationRepeat(Animation animation) {
// TODO 自动生成的方法存根

}

@Override
public void onAnimationEnd(Animation animation) {
// TODO 自动生成的方法存根
mImageView.startAnimation(RotateAnimation);
}
});
//组合动画   使用startOffset 值

XML

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

<alpha
android:duration="5000"
android:fromAlpha="0"
android:toAlpha="1" />
<alpha
android:duration="5000"
android:fromAlpha="1"
<span style="color:#FF6666;"> <span style="color:#FF0000;">android:startOffset="5000"</span></span>
android:toAlpha="0" />
<alpha
android:duration="5000"
android:fromAlpha="0"
<span style="color:#FF0000;"> android:startOffset="5000"</span>
android:toAlpha="1" />

</set>
//Activity切换动画          参数:第二个Activity进入时的动画 ,第一个Activity退出时的动画
XML zoomin.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="1000"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="-300"
android:toYDelta="0" >
</translate>

</set>


zoomout.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="1000"
android:fromXDelta="300"
android:fromYDelta="0"
android:toXDelta="0"
android:toYDelta="0" >
</translate>

</set>
代码
Intent intent=new Intent(MainActivity.this, ToActivity.class);
startActivity(intent);
<span style="color:#FF0000;">overridePendingTransition(R.anim.zoomout, R.anim.zoomin);</span>


//布局动画  Layout Animation   ListView项显示动画

XML

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fromXDelta="100"
android:fromYDelta="0"
android:toXDelta="0"
android:toYDelta="0" >
</translate>

<scale
android:duration="500"
android:fillAfter="true"
android:fromXScale="0.1"
android:fromYScale="0.1"
android:toXScale="1.0"
android:toYScale="1.0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
>
</scale>
</set>

代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_to);
ListView mListView=(ListView)findViewById(R.id.id_listView);

ArrayList<String> arrayList=new ArrayList<String>();

for (int i = 0; i < 20; i++) {
arrayList.add("小熊猫"+i);

}
ArrayAdapter<String> mAdapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,arrayList);
mListView.setAdapter(mAdapter);
Animation RotateAnimation=AnimationUtils.loadAnimation(ToActivity.this, R.anim.layanimation);
LayoutAnimationController lac=new LayoutAnimationController(RotateAnimation);
lac.setOrder(LayoutAnimationController.ORDER_NORMAL);
mListView.setLayoutAnimation(lac);
mListView.startLayoutAnimation();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: