Android动画解析1


       3.0以前,android支持两种动画模式,补间动画(tween animation),帧动画(frame animation),在android3.0中又引入了一个新的动画系统:属性动画(property animation)。今天先主要说一下补间动画

       补间动画我们直接成为View动画,他包含四种变换

                 平移动画 TranslationAnimation

                 缩放动画 ScaleAnimation

                 旋转动画 RotateAnimation

                 透明度动画 AlphaAnimation

        这四种动画创建方式有俩种,一种是通过代码动态创建,另一种是采用XML来定义动画,对于View动画来说,一般建议采用XML来实现,这是应为XML格式的动画拥有更好的可读性。

        创建View动画,首先创建XML文件,在res/anim/下创建XML文件,一个有五种标签可选,四中动画变化以及一种集合变换,View动画既可以单独采用一种动画,也可以采用set标签创建一系列动画。

        在创建动画是,有一个属性是android:interpolator,表示动画的插值器,用于管理动画的速度,如,加速、减速等,系统默认的是加速减速加值器accelerate_decelerate_interpolator;除此以外,还有一个属性是android:shareInterpolator,他表示动画是否与几何使用同一个插值器。

        tranlationanimation,屏移动画。新建translate标签,完成以下几个重要属性

                android:fromXDelta="0"---表示X的起始值
                android:fromYDelta="0"---表示Y的起始值
                android:toXDelta="500"---表示X的结束值
                android:duration="2000"----表示时长
                android:toYDelta="500"----表示Y的结束值

       

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0"
    android:fromYDelta="0"
    android:toXDelta="500"
    android:duration="2000"
    android:toYDelta="500">
</translate>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
    android:fillAfter="true"动画是都停留在结束<span style="font-family:微软雅黑;">位置</span>
    android:duration="2000"
    android:shareInterpolator="true">
    <span style="font-family:微软雅黑;"><!--起始透明度,终止透明度--></span>
    <alpha 
    	android:fromAlpha="1"
    	android:toAlpha="0.1">
	</alpha>
<pre name="code" class="java"><span style="font-family:微软雅黑;"><!--起始角度,终止角度,轴心是view中心--></span>   
<rotate android:fromDegrees="0" android:toDegrees="359" android:pivotX="0" android:pivotY="0"></rotate><scale android:fromXScale="0.1" android:toXScale="1.5" android:fromYScale="0.1" android:toYScale="1.5"> </scale> <translate android:fromXDelta="0" android:fromYDelta="0" android:toXDelta="500" android:toYDelta="500"></translate></set>

在应用中,通过AnimationUtils找到相应的动画,在用添加动画的控件启动该动画

        animation_alpha = AnimationUtils.loadAnimation(this, R.anim.animation_alpha);      
<span style="font-family:微软雅黑;">          </span>  animation_rotate = AnimationUtils.loadAnimation(this, R.anim.animation_rotate);  
<span style="font-family:微软雅黑;">   </span>      animation_scale = AnimationUtils.loadAnimation(this, R.anim.animation_scale);        
<span style="font-family:微软雅黑;">             </span>animation_set = AnimationUtils.loadAnimation(this, R.anim.animation_set);        
<span style="font-family:微软雅黑;">             </span>animation_trans = AnimationUtils.loadAnimation(this, R.anim.animation_trans);


@Override
	public void onClick(View v) {
		if (v.getId()==R.id.btn_alpha){
			iv.startAnimation(animation_alpha);
		}else if (v.getId()==R.id.btn_translate){
			iv.startAnimation(animation_trans);
		}else if (v.getId()==R.id.btn_rotate){
			iv.startAnimation(animation_rotate);
		}else if (v.getId()==R.id.btn_set){
			iv.startAnimation(animation_set);
		}else if (v.getId()==R.id.btn_scale){
			iv.startAnimation(animation_scale);
		}
	}

通过XML文件来实现动画已经完成了,接下来使用代码来完成

		AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);
		alphaAnimation.setDuration(1000);
		iv.startAnimation(alphaAnimation);
		TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, 500);
		translateAnimation.setDuration(1000);
		iv.startAnimation(translateAnimation);

其他动画同理。


效果图如下:



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值