码迷,mamicode.com
首页 > 移动开发 > 详细

Android学习——Animation动画效果

时间:2015-11-25 19:41:36      阅读:349      评论:0      收藏:0      [点我收藏+]

标签:android   动画   

1.Android动画模式:

    1>tweened animation: 渐变动画;

    2>frame by frame: 画面转换动画.

2.Android的Animation动画由四种类型组成:



XML
alpha渐变透明度动画效果
scale渐变尺寸伸缩动画效果
translate画面转换位置移动动画效果
rotate画面转移旋转动画效果



Java代码
AlphaAnimation渐变透明度动画效果
ScaleAnimation渐变尺寸伸缩动画效果
TranslateAnimation画面转换位置移动动画效果
RotateAnimation画面转移旋转动画效果


3.动画效果示例

在res/下新建anim文件夹,下面动画文件放入anim下面

    1> alpha 淡入效果:

    <?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.0"          android:duration="2000"  />     </set>     <!--          fromAlpha:开始时透明度         toAlpha: 结束时透明度 
        duration:动画持续时间 -->

    2>alpha 淡出效果:

    <?xml version="1.0" encoding="utf-8"?>     <set xmlns:android="http://schemas.android.com/apk/res/android">     <alpha         android:fromAlpha="1.0"          android:toAlpha="0.0"          android:duration="2000"  />     </set>     <!--          fromAlpha:开始时透明度         toAlpha: 结束时透明度 
        duration:动画持续时间 -->

    3> rotate 旋转效果:

    <?xml version="1.0" encoding="utf-8"?>    <set xmlns:android="http://schemas.android.com/apk/res/android"        android:fillAfter="false"
        android:zAdjustment="bottom" >
        <rotate            android:duration="4000"            android:fromDegrees="0"            android:pivotX="50%"            android:pivotY="50%"            android:toDegrees="360" />        <!--          fromDegrees   动画开始时的角度             toDegrees     动画结束时物件的旋转角度,正代表顺时针               pivotX    属性为动画相对于物件的X坐标的开始位置            pivotY    属性为动画相对于物件的Y坐标的开始位置            -->
    </set>

    4> scale 缩放效果:

    

<?xml version="1.0" encoding="utf-8"?>    <set xmlns:android="http://schemas.android.com/apk/res/android" >        <scale            android:duration="10000"            android:fromXScale="0.0"            android:fromYScale="0.0"            android:interpolator="@android:anim/decelerate_interpolator"            android:pivotX="50%"            android:pivotY="50%"            android:repeatCount="1"            android:repeatMode="reverse"            android:startOffset="0"            android:toXScale="1.5"            android:toYScale="1.5" />    </set>    <!--        fromXDelta,fromYDelta    起始时X,Y座标,屏幕右下角的座标是X:320,Y:480         toXDelta, toYDelta      动画结束时X,Y的座标    -->    <!--        interpolator ,指定动画插入器,常见的有加速减速插入器:accelerate_decelerate_interpolator            加速插入器      accelerate_interpolator,            减速插入器      decelerate_interpolator。         fromXScale,fromYScale,         动画开始前X,Y的缩放,0.0为不显示,  1.0为正常大小        toXScale,toYScale,         动画最终缩放的倍数, 1.0为正常大小,大于1.0放大        pivotX,  pivotY      动画起始位置,相对于屏幕的百分比,两个都为50%表示动画从屏幕中间开始         startOffset,      动画多次执行的间隔时间,如果只执行一次,执行前会暂停这段时间,        单位毫秒 duration,一次动画效果消耗的时间,单位毫秒,        值越小动画速度越快 repeatCount,动画重复的计数,动画将会执行该值+1次         repeatMode,动画重复的模式,reverse为反向,当第偶次执行时,动画方向会相反。        restart为重新执行,方向不变
    -->

    5> translate 移动效果:

<?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android" >
        <translate
            android:duration="4000"
            android:fromXDelta="0"
            android:fromYDelta="0"
            android:toXDelta="50"
            android:toYDelta="0" />
    </set>
    <!--
        fromXDelta,fromYDelta   起始时X,Y座标,屏幕右下角的座标是X:320,Y:480 
        toXDelta, toYDelta     动画结束时X,Y的座标
     -->


在代码中引用动画文件:

public class MainActivity extends Activity implements android.view.View.OnClickListener {
	
	private TextView tvShow;
	private Button btnRotate,btnFadeOut,btnFadeIn,btnScale,btnTranslate;
	private Animation animation = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        tvShow = (TextView) findViewById(R.id.tvShow);
        btnRotate = (Button) findViewById(R.id.btnRotate);
        btnRotate.setOnClickListener(this);
        btnFadeOut = (Button) findViewById(R.id.btnFadeOut);
        btnFadeOut.setOnClickListener(this);
        btnFadeIn = (Button) findViewById(R.id.btnFadeIn);
        btnFadeIn.setOnClickListener(this);
        btnScale = (Button) findViewById(R.id.btnScale);
        btnScale.setOnClickListener(this);
        btnTranslate = (Button) findViewById(R.id.btnTranslate);
        btnTranslate.setOnClickListener(this);	
    }

    @Override
    public void onClick(View v) {
    	switch (v.getId()) {
    	        //翻转
		case R.id.btnRotate:
			animation = AnimationUtils.loadAnimation(this, R.anim.rotate);
			break;
	        //淡出
		case R.id.btnFadeOut:
			animation = AnimationUtils.loadAnimation(this, R.anim.alpha_fadeout);
			break;
		//淡入
		case R.id.btnFadeIn:
			animation = AnimationUtils.loadAnimation(this, R.anim.alpha_fadein);
			break;
		//缩放
		case R.id.btnScale:
			animation = AnimationUtils.loadAnimation(this, R.anim.scale);
			break;
		//平移
		case R.id.btnTranslate:
			animation = AnimationUtils.loadAnimation(this, R.anim.translate);
			break;
		default:
			break;
		}
    	if(animation != null){
    		tvShow.startAnimation(animation);
    	}
    }
}

效果见下图:

技术分享


本文出自 “Alan_Y (Upspringing)” 博客,请务必保留此出处http://alany.blog.51cto.com/6125308/1716795

Android学习——Animation动画效果

标签:android   动画   

原文地址:http://alany.blog.51cto.com/6125308/1716795

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!