转载:http://blog.csdn.net/zhy_cheng/article/details/7950957
Android动画之初步(一)
Android Tweened Animation一共有四种
Alpha: 淡入淡出效果
Scale: 缩放效果
Rotate: 旋转效果
Translate:移动效果
使用Tweened Animations的步骤
1.创建一个AnimationSet对象
2.根据需要创建需要的Animation对象
3.根据软件动画的需要,为Animation对象设置相应的数据
4.将Animation对象添加到AnimationSet对象中
5.使控件对象开始执行AnimationSet
Alpha动画
- AnimationSet as=new AnimationSet(true);
- AlphaAnimation al=new AlphaAnimation(1,0);
- //1代表完全不透明,0代表完全透明
- al.setDuration(3000);
- as.addAnimation(al);
- iv.startAnimation(as);
Rotate动画
- AnimationSet as=new AnimationSet(true);
- RotateAnimation al=new RotateAnimation (0,720,Animation.RELATIVE_TO_PARENT,0.5f,Animation.RELATIVE_TO_PARENT,0.5f);
- //前两个参数参数旋转的角度,后面几个参数决定旋转的中心
- //Animation.ABSOLUTE:绝对坐标
- //Animation.RELATIVE_TO_PARENT:相对父控件
- //Animation.RELATIVE_TO_SELF:相对自己
- al.setDuration(3000);
- as.addAnimation(al);
- iv.startAnimation(as);
Scale动画
- AnimationSet as=new AnimationSet(true);
- ScaleAnimation al=new ScaleAnimation(0,1,0,1,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
- //前四个参数是X从多大到多大,Y从多大到多大,后面的参数是缩放的中心点
- al.setDuration(3000);
- as.addAnimation(al);
- iv.startAnimation(as);
Translate动画
- AnimationSet as=new AnimationSet(true);
- TranslateAnimation al=new TranslateAnimation(Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,2,Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,2);
- al.setDuration(3000);
- as.addAnimation(al);
- iv.startAnimation(as);
Animation还有几个方法
setFillAfter(boolean fillAfter)
如果fillAfter的值为真的话,动画结束后,控件停留在执行后的状态
setFillBefore(boolean fillBefore)
如果fillBefore的值为真的话,动画结束后,控件停留在动画开始的状态
setStartOffset(long startOffset)
设置动画控件执行动画之前等待的时间
setRepeatCount(int repeatCount)
设置动画重复执行的次数
Animation也可以放在XML文件中,这样程序的可维护性提高了。在XML中写动画的步骤如下
1.在res文件夹下面新建一个名为anim的文件夹
2.创建xml文件,并首先加入set标签,改标签如下
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
</set>
3.在该标签当中加入rotate,alpha,scale或者translate标签
4.在代码当中使用AnimationUtils加载xml文件,并生成Animation对象
Alpha动画
- <span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
- <set xmlns:android="http://schemas.android.com/apk/res/android"
- android:interpolator="@android:anim/accelerate_interpolator">
- <alpha
- android:fromAlpha="1.0"
- android:toAlpha="0.0"
- android:startOffset="500"
- android:duration="2000"
- />
- </set></span>
Animation a=AnimationUtils.loadAnimation(this, R.anim.alpha);
iv.startAnimation(a);
Scale动画
- <span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
- <set xmlns:android="http://schemas.android.com/apk/res/android"
- android:interpolator="@android:anim/accelerate_interpolator">
- <scale
- android:fromXScale="1.0"
- android:toXScale="0.0"
- android:fromYScale="1.0"
- android:toYScale="0.0"
- android:pivotX="50%"
- android:pivotY="50%"
- android:duration="2000"
- />
- </set></span>
Rotate动画
- <span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
- <set xmlns:android="http://schemas.android.com/apk/res/android"
- android:interpolator="@android:anim/accelerate_interpolator">
- <rotate
- android:fromDegrees="0"
- android:toDegrees="400"
- android:pivotX="50%"
- android:pivotY="50%"
- android:duration="3000"
- />
- </set></span>
Translate动画
- <span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
- <set xmlns:android="http://schemas.android.com/apk/res/android"
- android:interpolator="@android:anim/accelerate_interpolator">
- <translate
- android:fromXDelta="50%"
- android:toXDelta="100%"
- android:fromYDelta="50%"
- android:toYDelta="100%"
- android:duration="3000"
- />
- </set></span>
这里重点提一下android:pivotX和android:pivotY和android:fromXDelta,android:toXDelta
android:pivotX="50"使用绝对坐标
android:pivotX="50%"相对自己
android:pivotX="50%p"相对父控件
Android动画之Interpolator和AnimationSet(三)
AnimationSet可以加入Animation,加入之后设置AnimationSet对加入的所有Animation都有效。
- AnimationSet anim=new AnimationSet(true);
- AlphaAnimation a=new AlphaAnimation(1,0);
- RotateAnimation ra=new RotateAnimation(0, 720, Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF,0.5f);
- anim.addAnimation(a);
- anim.addAnimation(ra);
- anim.setDuration(3000);
- anim.setStartOffset(1000);
- iv.startAnimation(anim);
可以再xml文件中定义多个Animation,这样多个Animation可以一起运行
- <?xml version="1.0" encoding="utf-8"?>
- <set xmlns:android="http://schemas.android.com/apk/res/android"
- android:interpolator="@android:anim/accelerate_interpolator"
- android:shareInterpolator="true"
- >
- <alpha
- android:fromAlpha="1.0"
- android:toAlpha="0.0"
- android:startOffset="500"
- android:duration="3000"
- />
- <rotate
- android:fromDegrees="0"
- android:toDegrees="400"
- android:pivotX="50%"
- android:pivotY="50%"
- android:duration="3000"
- />
- </set>
Interpolator可以定义动画播放的速度
在xml文件中定义Interpolator
android:interpolator="@android:anim/accelerate_interpolator"
android:shareInterpolator="true"
这样所有的Animation共用一个Interpolator。
在代码中用代码设置如下
anim.setInterpolator(new AccelerateInterpolator());
在new一个AnimationSet中传入true则所有的Animation共用Interpolator。
现在使ImageView中的图片可以动起来
1.在drawable-mdpi文件夹下加入图片,并加入一个xml文件,文件如下
- <?xml version="1.0" encoding="utf-8"?>
- <animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
- <item android:drawable="@drawable/a" android:duration="500"/>
- <item android:drawable="@drawable/b" android:duration="500"/>
- <item android:drawable="@drawable/c" android:duration="500"/>
- <item android:drawable="@drawable/d" android:duration="500"/>
- </animation-list>
2.代码如下
- iv.setBackgroundResource(R.drawable.anim);
- AnimationDrawable an=(AnimationDrawable)iv.getBackground();
- an.start();
其实可以用一个线程加Handler来实现动画的,在线程中隔一定时间发送消息,更改ImageView的图片。
Android动画之LayoutAnimationController(五)
LayoutAnimationController可以控制一组控件按照规定显示,有两种方法来实现
1.下面以XML文件实现,先在res下新建anim文件夹,新建一个文件alpha.xml
- <?xml version="1.0" encoding="utf-8"?>
- <set xmlns:android="http://schemas.android.com/apk/res/android"
- android:interpolator="@android:anim/accelerate_interpolator"
- android:shareInterpolator="true"
- >
- <alpha
- android:fromAlpha="0"
- android:toAlpha="1"
- android:duration="3000"
- />
- </set>
然后新建一个文件layoutanimation.xml
- <?xml version="1.0" encoding="utf-8"?>
- <layoutAnimation
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:delay="0.5"
- android:animationOrder="normal"
- android:animation="@anim/alpha"
- />
在listview中使用下面代码
- <ListView
- android:id="@+id/listView1"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layoutAnimation="@anim/layoutanimation"/>
这样就完成了
2.代码实现
- AlphaAnimation alpha=new AlphaAnimation(0, 1);
- alpha.setDuration(3000);
- LayoutAnimationController lac=new LayoutAnimationController(alpha);
- lac.setOrder(LayoutAnimationController.ORDER_NORMAL);
- lv.setLayoutAnimation(lac);
下面是显示的顺序
LayoutAnimationController.ORDER_NORMAL; //顺序显示
LayoutAnimationController.ORDER_REVERSE;//反显示
LayoutAnimationController.ORDER_RANDOM//随机显示
Android动画之AnimationListener(六)
通过AnimationListener可以监听Animation的运行过程
- AnimationSet as=new AnimationSet(true);
- RotateAnimation al=new RotateAnimation(0,-720,Animation.RELATIVE_TO_PARENT,0.5f,Animation.RELATIVE_TO_PARENT,0.5f);
- al.setDuration(3000);
- al.setAnimationListener(new AnimationListener(){
- public void onAnimationStart(Animation animation) {
- // TODO Auto-generated method stub
- }
- public void onAnimationEnd(Animation animation) {
- // TODO Auto-generated method stub
- }
- public void onAnimationRepeat(Animation animation) {
- // TODO Auto-generated method stub
- }
- });
- as.addAnimation(al);
- iv.startAnimation(as);
有三个方法分别是Animation开始的时候调用,完成的时候调用,重复的时候调用。
相关推荐
" Android 图片及动画的缩放和旋转实现" Android 动画有两种:Tween Animation 和 Frame Animation。本文主要介绍 Tween Animation 的实现, Tween Animation 是对视图对象中的内容进行一系列简单的转换,比如位置...
7. **AnimationTest**:这个压缩包中的文件很可能是包含了一系列关于Android动画的测试用例。通过运行和分析这些测试,开发者可以更好地理解和掌握各种动画效果的实现,同时也能测试自己的设备是否能正确渲染这些...
本文将深入探讨"Android动画效果大全",包括各种类型的动画以及如何基于这些技术实现炫酷的特效。 首先,Android提供两种主要的动画机制:帧动画(Frame Animation)和属性动画(Property Animation)。帧动画适用...
本教程将深入探讨Android动画原理,并通过一个名为"AnimationDemo"的示例项目来具体阐述。 一、Android动画类型 Android提供了两种主要类型的动画:属性动画(Property Animation)和视图动画(View Animation)。...
在Android开发中,动画是提升用户体验的关键因素,它能让应用变得更加生动、有趣且易于操作。本教程主要聚焦于四个核心的动画应用场景:菜单侧滑、图标旋转、对话框(Dialog)弹出以及按钮点击效果。以下是对这些...
本文将深入探讨“Android动画效果的强悍框架”,特别是提及的“BaseAnimation1.3”库,以及如何利用这个库来实现300种左右的原生和自定义动画。 首先,让我们了解Android中的基本动画类型。Android支持两种主要的...
总之,理解并熟练运用这些Android动画技术,不仅可以提升应用的视觉吸引力,还能帮助开发者创造出更加流畅、自然的用户体验。对于新手来说,从基础动画开始学习,逐步进阶到属性动画,是成为专业Android开发者的...
将气泡爆炸过程分解为一系列图片,通过AnimationDrawable类播放这些图片来模拟动画。 8. **性能优化**: 为了确保动画流畅,我们需要考虑到性能优化。例如,避免在主线程中进行大量计算,使用硬件加速,以及合理地...
在Android开发中,动画是提升用户体验的关键元素之一。Android提供了多种动画类型,其中包括单帧动画(Frame Animation),它主要用于创建简单的序列图像动画。本篇将深入探讨如何在Android中实现单帧动画,特别是...
下面我们将深入探讨Android动画的几个主要类别及其重要知识点。 1. **视图动画(View Animation)** 视图动画是Android早期提供的动画机制,通过改变View的透明度、位置、大小或旋转等属性来实现动画效果。这些变化...
"Android动画合集"是对这个主题的基础总结,主要涵盖了Android系统中的三种基本动画类型:属性动画、帧动画和补间动画。这些概念对于Android开发者,尤其是初学者来说,是理解和实现动态用户界面的基础。 首先,...
Android动画效果包集合了多种基本的动画效果,旨在帮助开发者轻松创建出丰富的用户交互界面。这个资源包中的动画效果经过精心设计,可以为你的应用程序增添独特的视觉魅力。 Android的动画系统分为两大类:视图动画...
下面我们将深入探讨Android动画体系以及这些源码可能涵盖的知识点。 1. **属性动画(Property Animation)** - Android 3.0(API Level 11)引入了属性动画系统,它允许开发者对对象的任何属性进行动画化,而不...
本资源包"Android动画集合"包含了一系列关于Android动画的详细资料,旨在帮助开发者深入理解和运用Android平台上的动画机制。 首先,我们要理解Android支持两种主要类型的动画:属性动画(Property Animation)和...
这篇资料集合了史上最全的Android动画效果,涵盖了图片切换以及各种动态交互设计。以下是对这些关键知识点的详细解释: 1. **Android 动画效果**:Android 提供了两种类型的动画系统,即视图动画(View Animation)...
帧动画是通过连续播放一系列静态图像来创建动态效果的一种方式。在Android中,我们可以使用`AnimationDrawable`类来实现帧动画。首先,我们需要在资源目录下创建一个XML文件(如`frame_animation.xml`),定义每一帧...
Android动画主要分为两种类型:属性动画(Property Animation)和视图动画(View Animation)。本篇将深入探讨这两种动画机制,以及如何在实际项目中应用它们。 1. **视图动画(View Animation)**:视图动画是...
本案例“Android动画高级用法演示”深入探讨了Android动画系统的一些高级特性,包括属性动画、帧动画以及视图动画。 1. **属性动画**(Property Animation): - 属性动画系统是Android 3.0(API 11)引入的,它...
综上,Android动画系统提供了多种方式来实现各种动画效果,开发者可以根据需求选择合适的动画类型。无论是简单的视图移动,还是复杂的场景过渡,都能通过这些工具实现。同时,随着版本的更新,Android还提供了更多...
至于“工具”,Android Studio提供了一系列的调试工具,如Hierarchy Viewer和Layout Inspector,可以帮助开发者可视化和调试3D旋转效果,确保动画在不同设备上表现一致。 总结起来,Android的3D旋转涉及到`Matrix`...