android 简单动画之 animtion

Android  简单的动画效果有Animtion 类提供 1.在XML中实现动画效果;2.在java代码中实现动画效果。

动画相关的属性

表一:SET属性
名称 属性 备注
android:shareInterpolator 是否共享插入器 共享时,四个子节点都用一个插入器
android:interpolator 指定一个动画的插入器 使用系统资源
android:fillEnabled 当设置为true时,fillAfter和fillBefroe将会都为true,此时会忽略fillBefore 和fillAfter两种属性
android:fillAfter 该动画转化是否在动画结束后被应用 boolean
android:fillBefore 该动画转化是否在动画开始前被应用 boolean
android:repeatMode 重复模式 "restart" =从头开始 或者 "reverse"=从末尾开始
android:repeatCount 重复次数 integer -1为无限循环
android:duration 动画持续时间 integer
android:startOffset 动画时间间隔(动画执行前停留时间) long
android:zAdjustment 定义动画z order的变换 [normal] or [top] or [bottom]
android:detachWallpaper 未知 boolean
     
     

这里详细解释下android:interpolator 动画插入器属性(动画速度效果的体现)。

[email protected]:anim/accelerate_decelerate_interpolator:先加速后减速

[email protected]:anim/accelerate_interpolator :加速

[email protected]:anim/decelerate_interpolator:减速

[email protected]:anim/anticipate_interpolator:先往动画移动的反方向移动一点然后在沿着设定的动画移动  移动轨迹如下图。

5.anticipate_overshoot_interpolator:先往动画的反方向移动一点,然后沿着设定的方向移动到终点之后继续移动一点然后在回弹到最终设定的位置。如下图:

[email protected]:anim/bounce_interpolator:动画移动到最后会有几次回弹的效果,最终停止在设定的位置。

[email protected]:anim/cycle_interpolator:动画周期移动。

[email protected]:anim/linear_interpolator:动画匀速移动。

[email protected]:anim/overshoot_interpolator:动画到最后的位置会向反方向移动一点。

Interpolator对象 资源ID 功能作用
AccelerateDecelerateInterpolator @android:anim/accelerate_decelerate_interpolator 先加速再减速
AccelerateInterpolator @android:anim/accelerate_interpolator 加速
AnticipateInterpolator @android:anim/anticipate_interpolator 先回退一小步然后加速前进
AnticipateOvershootInterpolator @android:anim/anticipate_overshoot_interpolator 在上一个基础上超出终点一小步再回到终点
BounceInterpolator @android:anim/bounce_interpolator 最后阶段弹球效果
CycleInterpolator @android:anim/cycle_interpolator 周期运动
DecelerateInterpolator @android:anim/decelerate_interpolator 减速
LinearInterpolator @android:anim/linear_interpolator 匀速
OvershootInterpolator @android:anim/overshoot_interpolator 快速到达终点并超出一小步最后回到终点

关于修改动画插入器的属性  给个链接:点击打开链接

表二:alpha
名称 属性 备注
android:toAlpha 动画结束时的透明度 float [0,1]  0表示完全透明 1表示完全不透明
android:duration 动画持续时间 integer
android:fromAlpha 动画开始时的透明度 float [0,1]  0表示完全透明 1表示完全不透明
     
表三:SCALE
名称 属性 备注
android:fromXScale 动画开始时,X坐标上的伸缩尺寸 float,0.0表示收缩到没有、1.0表示正常无伸缩,小于1表示收缩,大于1表示放大
android:toXScale 动画结束时,X坐标上的伸缩尺寸 同上
android:fromYScale 动画开始时,Y坐标上的伸缩尺寸 同上
android:toYScale 动画结束时,Y坐标上的伸缩尺寸 同上
android:pivotX 动画相对于物件的X的开始位置 [0%,100%],50%表示中间
android:pivotY 动画相对于物件的Y的开始位置 0%,100%],50%表示中间
android:duration 同set 同set
     
表四:TRANSLATE
名称 属性 备注
android:fromXDelta 动画开始时,X坐标上的位置 integer  默认以自己为参照物
android:toXDelta 动画结束时,X坐标上的位置 integer  默认以自己为参照物
android:fromYDelta 动画开始时,Y坐标上的位置 integer  默认以自己为参照物
android:toYDelta 动画结束时,Y坐标上的位置 integer  默认以自己为参照物
     
表五:ROTATE
名称 属性 备注
android:fromDegrees 动画开始时,物件的角度 负数:逆时针旋转,正数:顺时针旋转
android:toDegrees 动画结束时,物件的角度(可大于360度) 同上
android:pivotX 动画相对于物件的X的开始位置 [0%,100%],50%表示中间
android:pivotY 动画相对于物件的Y的开始位置 [0%,100%],50%表示中间
   

一..XML 实现 alpha :

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

    <alpha
        android:duration="2000"
        android:fromAlpha="0"
        android:repeatCount="3"//动画重复的次数
        android:repeatMode="reverse"//动画重复的模式  reverse:倒序,即从最后一帧播放动画;  restart:顺序,即从头开始播放动画
        android:toAlpha="1.0" />

</set>

几个值得注意的地方:如果你需要让动画设置 android:fillAfter="true"

android:fillBefore="false" 的相关属性的时候 必须将属性这是在<set>下面才有效。比如有效的 设置是这样的

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

    <alpha
        android:duration="2000"
        android:fromAlpha="0"

        android:repeatCount="3"
        android:repeatMode="reverse"
        android:toAlpha="1.0" />

</set>

那么上面的动画就停留在最后一帧画面上。

二.代码实现alpha

Animation anim = new AlphaAnimation(0f, 1.0f);
		anim.setDuration(2000);
		anim.setRepeatCount(Animation.INFINITE);
		anim.setRepeatMode(Animation.RESTART);

三.XML实现scale

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true"
    android:interpolator="@android:anim/decelerate_interpolator" >
 <!-- 画面停留在最后一帧 -->
    >

    <scale
        android:duration="2000"
        android:fromXScale="0.5"
        android:fromYScale="0.5"
        android:pivotX="50.0%" >
 <!-- 动画相对于空间X坐标开始的位置50。0%表示从空间的正中央开始缩放动画 -->
        android:pivotY="50.0%"
        android:repeatCount="3"
        android:repeatMode="reverse"
        android:toXScale="1.0"
        android:toYScale="1.0"
         />

    </scale>

</set>

四.代码实现scale

Animation anim1 = new ScaleAnimation(0.5f, 1.0f, 0.5f, 1.0f, 0.5f, 0.5f);
		anim1.setDuration(2000);
		anim1.setRepeatCount(3);
		anim1.setRepeatMode(Animation.REVERSE);
		anim1.setInterpolator(this, interpolator.accelerate_decelerate);
		anim1.setFillAfter(true);

五.XML实现stranslate

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator"
    android:fillAfter="true" >

    <translate
        android:duration="2000"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="0"
        android:toYDelta="1080" />

</set>

六代码实现Stranslate

Animation animTranlate = new TranslateAnimation(0, 0, 0, 400);
		animTranlate.setDuration(2000);
		animTranlate.setFillAfter(true);
		animTranlate.setInterpolator(this, interpolator.bounce);
		text.startAnimation(animTranlate);

七.XML实现rotate

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator" >

    <rotate
        android:duration="2000"
        android:fromDegrees="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="180" //负数就是逆时针,正数顺时针。
/>

</set>

八.代码实现rotate

Animation animRotate = new RotateAnimation(0f, 360f,
				Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
				0.5f);

		animRotate.setDuration(2000);
		animRotate.setInterpolator(this, interpolator.bounce);
		animRotate.setFillAfter(true);
<span style="white-space:pre">		animRotate.setStartOffset(2000);</span>//动画执行前停留时间
		text.startAnimation(animRotate);

九.组合动画的实现

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:fillAfter="true"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator" >

    <alpha
        android:fromAlpha="0"
        android:toAlpha="1.0" />

    <scale
        android:fromXScale="0"
        android:fromYScale="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.0"
        android:toYScale="1.0" />

</set>

十.代码实现组合动画

Animation anim1 = new ScaleAnimation(0.5f, 1.0f, 0.5f, 1.0f, 0.5f, 0.5f);
		anim1.setDuration(2000);
		anim1.setRepeatCount(3);
		anim1.setRepeatMode(Animation.REVERSE);
		anim1.setInterpolator(this, interpolator.accelerate_decelerate);
		anim1.setFillAfter(true);
		// text.setAnimation(anim1);

		Animation animTranlate = new TranslateAnimation(0, 0, 0, 400);
		animTranlate.setDuration(2000);
		animTranlate.setFillAfter(true);
		animTranlate.setInterpolator(this, interpolator.bounce);
		// text.startAnimation(animTranlate);
		Animation animRotate = new RotateAnimation(0f, 360f,
				Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
				0.5f);

		animRotate.setDuration(2000);
		animRotate.setInterpolator(this, interpolator.bounce);
		animRotate.setFillAfter(true);
		// text.startAnimation(animRotate);

		AnimationSet animationSet = new AnimationSet(true);
		animationSet.addAnimation(animRotate);
		animationSet.addAnimation(animTranlate);
		animationSet.addAnimation(anim1);
		text.startAnimation(animationSet);

完结!

时间: 2024-10-04 16:57:00

android 简单动画之 animtion的相关文章

Android简单动画效果

a1.xml 淡出效果 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <alpha android:duration="500" android:fromAlpha="1.0" android:toAlpha=&qu

【转】android 属性动画之 ObjectAnimator

原文网址:http://blog.csdn.net/feiduclear_up/article/details/39255083 前面一篇博客讲解了 android 简单动画之 animtion,这里来讲解一下android 3.0之后添加的一些动画   animator 中的 ObjectAnimator . 属性动画概念: 所谓属性动画:改变一切能改变的对象的属性值,不同于补间动画:只能改变 alpha,scale,rotate,translate.听着有点抽象,举例子说明 补间动画能实现的

android 属性动画之 ObjectAnimator

前面一篇博客讲解了 android 简单动画之 animtion,这里来讲解一下android 3.0之后添加的一些动画   animator 中的 ObjectAnimator . 1.alpha //第一个参数为 view对象,第二个参数为 动画改变的类型,第三,第四个参数依次是开始透明度和结束透明度. ObjectAnimator alpha = ObjectAnimator.ofFloat(text, "alpha", 0f, 1f); alpha.setDuration(20

Android属性动画ValueAnimator源码简单分析

Android开发的过程中经常要用到属性动画,经常都是网上扒下来看下怎么用,但是经常不知道为什么要这么用,手一哆嗦一不小心就点到源码里面去了.我们就来看看Android属性动画ValueAnimator类源码的简单实现,从而对ValueAnimator类有个大概的了解. 在Android开发过程中做动画效果的时候用到ValueAnimator的时候最简单的方法我们是这么干的 // ValueAnimator ValueAnimator valueAnimator = ValueAnimator.

Android属性动画AnimatorSet源码简单分析

跟上之前的两篇文章 Android属性动画ValueAnimator源码简单分析 Android属性动画ObjectAnimator源码简单分析 继续看AnimatorSet源码的大概过程. AnimatorSet 提供了一种把多个动画放到一起,按照某种特定的顺序来播放,比如一个接一个的播放或者多个动画一起播放. AnimatorSet简单使用随便举一个最简单的例子 //AnimatorSet AnimatorSet animSet = new AnimatorSet(); ObjectAnim

[转]android logo:内核、android开机动画

平台信息:内核:linux2.6/linux3.0系统:android/android平台:S5PV310(samsungexynos4210/4412) 作者:xubin341719(欢迎转载,请注明作者) android开logo,这一块在工作改动的也是比较多的,也比较简单,不同的公司,不同型号的产品,开机的标识不一样. 我们平时目测的开机logo一般是两种:静态的和动画的.其实在实现logo的过程中,有四幅图片:(1).uboot显示:(2).kernel显示logo_linux_clut

Android属性动画初步学习笔记

近期学习Android属性动画和VetcorDrawable实现属性动画,以此记录一下学习笔记. 首先是属性动画,小白没截过动态图,方三张静态图吧       效果是点击红色图片,7个选项以属性动画的方式弹出并旋转,最后成一个1/4圆弧排列,再次点击则收回到红色原点下. 布局文件很简单,就是一个RelativeLayout下八个ImageView: 1 <?xml version="1.0" encoding="utf-8"?> 2 <Linear

Android 属性动画(Property Animation) 完全解析 (上)

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38067475 1.概述 Android提供了几种动画类型:View Animation .Drawable Animation .Property Animation .View Animation相当简单,不过只能支持简单的缩放.平移.旋转.透明度基本的动画,且有一定的局限性.比如:你希望View有一个颜色的切换动画:你希望可以使用3D旋转动画:你希望当动画停止时,View的

自定义实现ExpandableListView收缩的简单动画效果

以下是 ExpandableListView 收缩的简单动画效果 1 /* 2 * Copyright (C) 2014 Gary Guo 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the L