目前android有三种动画类型:tween动画、frame动画和property动画
1、tween动画:
AlphaAnimation
|
渐变透明度动画效果
|
ScaleAnimation
|
渐变尺寸伸缩动画效果
|
TranslateAnimation
|
画面转换位置移动动画效果
|
RotateAnimation
|
画面转移旋转动画效果
|
可以在工程下res文件夹->anim文件夹(需要自己新建)下新建xml文件进行定义动画比如:
<span style="font-family:KaiTi_GB2312;font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true">
<translate />
<alpha/>
<scale/>
<rotate/>
</set></span>
再在java文件中调用Animation animation = AnimationUtils.loadAnimation(context,resid)方法获取到。
当然也可以在ja件中动态实例化对应的动画:
AlphaAnimation animation_Alpha= new AlphaAnimation(0.1f, 1.0f);
2、frame动画
可以将
XML文件放在/res/drawable/目录下<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true">
<item android:drawable="@drawable/pic_state1" android:duration="200" />
<item android:drawable="@drawable/pic_state2" android:duration="200" />
<item android:drawable="@drawable/pic_state3" android:duration="200" />
</animation-list>
然后在java文件中获取到:
ImageView imageView = (ImageView) findViewById(R.id.imageView1);
imageView.setBackgroundResource(R.drawable.drawable_anim);
AnimationDrawable anim = (AnimationDrawable) imageView.getBackground();
再用AnimationDrawable的start和stop方法控制动画开始和停止。
需要注意几个问题:
-
要在代码中调用Imageview的setBackgroundResource方法,如果直接在XML布局文件中设置其src属性当触发动画时会出问题。
-
SDK中提到的,不要在onCreate中调用start,因为AnimationDrawable还没有完全跟Window相关联,如果想要界面显示时就开始动画的话,可以在onWindowFoucsChanged()中调用start(),或者利用handler.post()方法。
3、property动画
字面意思理解是属性动画,也就是说在执行动画的过程中可以改变当前执行动画对象的某个属性来控制动画的执行。这个动画在android3.0以后出来的,弥补了tween动画的某些缺陷,可以实现类似3D的旋转等等。
我实现了一个按钮的移动,当然按钮的监听会跟着按钮一起移动,而用tween动画移动后按钮监听还是在按钮的初始位置
上代码:
/**
* teen动画和property动画的实例
* @author hand
*
*/
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/**
* 用tween动画移动按钮,点击事件只发生在按钮原来的位置
* @param v
*/
public void clickBtn1(View v){
Animation animation = AnimationUtils.loadAnimation(this, R.anim.translate_x);
findViewById(R.id.tween_animation_btn).startAnimation(animation);
}
/**
* 用property动画移动按钮,点击事件跟随按钮位置变化而变化
* @param v
*/
@SuppressLint("NewApi")
public void clickBtn2(View v){
Button btn = (Button)findViewById(R.id.property_animation_btn);
Animator animator = AnimatorInflater.loadAnimator(this,R.animator.translate2);
animator.setTarget(btn);
animator.start();
}
}
其中
R.animator.translate2在res/animator(自己新建一个)目录下:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<objectAnimator
android:duration="2000"
android:propertyName="x"
android:valueFrom="0"
android:valueTo="450">
</objectAnimator>
</set>
activity_main.xml文件如下;
<pre name="code" class="html"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.hd.property_animation_demo.MainActivity"
tools:ignore="MergeRootFrame" >
<Button
android:id="@+id/tween_animation_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="tween动画"
android:onClick="clickBtn1"/>
<Button
android:id="@+id/property_animation_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="property动画"
android:onClick="clickBtn2"/>
</RelativeLayout>
以上主要是
property_animation_btn实现了点击自己移动,而上面的tween_animation_btn的按钮是用tween动画实现的移动,大家可以试试,两者区别明显:
图片不能上传了,就简单说一下:用tween动画实现移动以后,按钮停在动画结束为止,可以按钮监听停留在原位置没有随着按钮移动而移动;而property动画按钮监听随着按钮移动而移动到了动画结束的位置。
源码很简单,关键理解property动画的应用
分享到:
相关推荐
Android 动画总结 在Android开发中,动画的使用能够极大地提升用户体验,使其更加生动有趣。本文将深入探讨Android中的几种动画技术,包括系统动画、自定义动画、硬件加速以及OpenGL在动画中的应用。 一、系统动画...
在Android中,我们可以使用`AnimationDrawable`类来实现帧动画。首先,我们需要在资源目录下创建一个XML文件(如`frame_animation.xml`),定义每一帧图片及其持续时间: ```xml <animation-list xmlns:android=...
`RotateAnimation`是Android中实现旋转效果的专用动画类。它可以根据指定的初始角度和最终角度,使视图进行旋转。 1. 创建RotateAnimation 创建`RotateAnimation`对象,需要提供起始角度、结束角度、旋转中心X坐标...
这篇"Android动画学习总结---下"着重探讨了Android属性动画(Property Animation)的使用方法。属性动画系统是Android 3.0(API Level 11)引入的新特性,与视图动画(View Animation)相比,它提供了更为强大的动画...
本文将对Android动画进行全面总结,探讨如何利用Android系统提供的工具和技术来创建各种类型的动画。 一、Android动画类型 1. **帧动画(AnimationDrawable)**:帧动画类似于电影胶片,通过连续播放一系列图片来...
"android总结动画显示效果.zip"这个压缩包文件很可能是包含了一系列关于Android动画实现的示例代码、资源文件和详细说明,旨在帮助开发者掌握如何在Android平台上创建火焰动画以及其他各种动态效果。 Android动画...
总结,Android中的补间动画为我们提供了一种简单而强大的方式来实现各种视觉效果,包括向中心点吸入的效果。通过理解动画的基本原理和属性,开发者可以创建出更加吸引人的用户界面,提升应用的体验。同时,合理地...
首先,让我们了解Android中的基本动画类型。Android支持两种主要的动画机制:补间动画(Tween Animation)和帧动画(Frame Animation)。补间动画用于改变视图的位置、大小、透明度等属性,它通过在一段时间内平滑地...
本文将深入探讨在Android中如何创建和使用各种动画,特别是属性动画和补间动画,这些都是Android动画的基础和核心。 首先,我们来理解补间动画(Tween Animation)。补间动画是在两个关键帧之间平滑地改变对象的...
本篇将深入探讨如何在Android中实现属性动画的暂停和播放停止功能。 首先,我们需要了解属性动画的基本概念。与帧动画(Frame Animation)不同,属性动画不依赖于视图的绘制循环,它会直接改变对象的属性并更新UI。...
总结,Android动画原理涵盖了视图动画和属性动画,它们各自有其特点和适用场景。通过"AnimationDemo"项目,我们可以亲手实践,了解如何创建和应用这些动画,从而提升应用的交互性和视觉体验。在实际开发中,选择合适...
总结起来,实现Android中的硬币翻转动画,需要创建补间动画XML文件,定义翻转前后状态,然后在代码中加载动画并设置监听器来控制动画的循环播放。同时,添加点击事件监听器可以进一步定制交互行为,为用户提供更丰富...
本篇将详细介绍如何在Android中实现PopupWindow、Activity的推出推入、缩放等动画效果。 首先,我们关注PopupWindow的动画效果。PopupWindow是一个可以浮现在Activity之上的窗口组件,通常用于创建下拉菜单、提示框...
帧动画是Android早期版本中的动画机制,适用于简单的序列动画,如播放一系列图片来形成连续的动作。它基于`AnimationDrawable`类,将多张图片打包成一个动画资源。 - 创建一个XML文件(通常位于res/anim目录下),...
总结来说,实现"android金币掉落动画"涉及到的知识点包括:Android的动画系统(属性动画和视图动画)、`ObjectAnimator`或`TranslateAnimation`的使用、插值器的应用、动画监听和事件处理,以及在不同API级别的兼容...
本文将对Android动画进行深入的总结,涵盖基础动画、属性动画以及如何在实际项目中应用。 1. 基础动画(View Animation) Android的基础动画主要包含Alpha(透明度)、Scale(缩放)、Translate(平移)和Rotate...
Android中的动画API,如`Animation`和`Animator`类,为开发者提供了丰富的工具。`ValueAnimator`可以处理基于时间的动画,控制属性值的变化;`ObjectAnimator`则更进一步,可以直接对对象的属性进行操作。在"树干...
在Android中,有两种主要类型的动画:属性动画(Property Animation)和视图动画(View Animation)。视图动画较为简单,适用于API等级较低的设备,而属性动画则提供了更强大的功能,可以改变对象的任意属性。对于...