视图动画和帧动画

转载请注明出处:http://blog.csdn.net/ZhouLi_CSDN/article/details/45971421

View Animaiton

  • 通常使用xml文件定义动画,这样易读,重用。
  • xml写在res/anim/路径下。

    下面是例子:

<set android:shareInterpolator="false">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="700" />
    <set android:interpolator="@android:anim/decelerate_interpolator">
        <scale
           android:fromXScale="1.4"
           android:toXScale="0.0"
           android:fromYScale="0.6"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400"
           android:fillBefore="false" />
        <rotate
           android:fromDegrees="0"
           android:toDegrees="-45"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400" />
    </set>
</set>

pivotX:“50”for 50%相对于父视图,“50%”for 50%相对于自己。 使用:

ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);

设置动画启动时间:

Animation.setStartTime(), 然后View.setAnimation().

注意:不管动画怎么移动,大小如何变化,拥有动画的视图不会调整自己容纳它,视图会超过他的范围,并且不会被裁减。当超过了它的父view的时候才会发生裁减。

Drawable Animation

类:AnimationDrawable

如果视同xml定义放在res/drawable/路径下:

举例:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="true">
    <item android:drawable="@drawable/rocket_thrust1" android:duration="200" />
    <item android:drawable="@drawable/rocket_thrust2" android:duration="200" />
    <item android:drawable="@drawable/rocket_thrust3" android:duration="200" />
</animation-list>
  • oneShot:设置为true,只播放一次,停止在最后一帧。
  • 设置为false,循环播放。
  • 使用:

    它可以被添加为一个view的background,然后调用启动动画。

  • 举例:
AnimationDrawable rocketAnimation;

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
  rocketImage.setBackgroundResource(R.drawable.rocket_thrust);
  rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
}

public boolean onTouchEvent(MotionEvent event) {
  if (event.getAction() == MotionEvent.ACTION_DOWN) {
    rocketAnimation.start();
    return true;
  }
  return super.onTouchEvent(event);
}

注意:不能在oncreate方法中使用start()方法,因为AnimationDrawable还没有被关联到window。如果你想让动画启动后就生效,可以在activity的onWindowFocusChanged()方法中start(),当android将你的window设置为focus时会调用。

时间: 2024-08-26 02:10:43

视图动画和帧动画的相关文章

uwp 图片切换动画 使用帧动画

原文:uwp 图片切换动画 使用帧动画 上一篇博客使用了Timer来实现图片的切换,@lindexi_gd讨论了一下性能,我本人其实对性能这一方面不太熟,但我觉得还是有必要考虑一下,那么今天我们使用帧动画开实现以下 新建项目,添加一个Button和Image 在Page里定义资源 <Storyboard x:Key="std" x:Name="std" RepeatBehavior="Forever" AutoReverse="T

Android笔记(六十三) android中的动画——逐帧动画( frame-by-frame animation)

就好像演电影一样,播放实现准备好的图片,来实现动画效果. 逐帧动画需要用到AnimationDrawable类,该类主要用于创建一个逐帧动画,然后我们把这个动画设置为view的背景即可. android提供两种方法为AnimationDrawable添加帧:XML定义和JAVA代码创建. XML 因为动画帧的资源需要是一个Drawable对象,所以需要把它放到Drawable目录下.在<animation-list>使用<item>来添加一帧 anima.xml <?xml

WPF(Windows10通用应用程序开发) 线性插值动画 or 帧动画学习笔记及实例

线性插值动画: [Storyboard]基本属性: TargetProperty:目标属性 TargetName:目标名称 From:指向属性的初始值:(可省略) To/By:(二选一) To:指向属性动画完成后的值:(可省略) By:指向属性初始值增加的值:(可省略) Duration:动画执行时间:格式:hh:mm:ss(如:0:0:1表示动画执行1s) AutoReverse:时间线(动画)达到Duration终点时是否倒退(true/false) RepeatBehavior:表示时间线

IOS开发--动画篇--&gt;火焰帧动画

火焰帧动画 火焰帧动画,并添加停止/开始按钮 火焰帧动画步骤: 1,创建可变数组,存放图片 2,创建帧动画所需的图片(for循环创建),并将所创建的图片放入可变数组中 3,创建视图ImageView,并设置其初始图片,放在window上 4,设置帧动画时间,默认时间为1/30.1*图片数目: _imageView.animationDuration = 1; 5,设置动画的图片数组,赋值的数组必须存放的是UIImage类型的对象: _imageView.animationImages = arr

android104 帧动画,补间动画,属性动画

##帧动画FrameAnimation* 多张图片快速切换,形成动画效果* 帧动画使用xml定义 package com.itheima.frameanimation; import android.os.Bundle; import android.app.Activity; import android.graphics.drawable.AnimationDrawable; import android.view.Menu; import android.widget.ImageView;

Android -- 逐帧动画

在处理耗时工作的时候,大多数会弹出一个加载的框,里面有一个连续旋转的图片,很多时候都是用一张图片,使用rotate来设定旋转,不过看起来不太美观,没有形象感,在3.0之前Android有两种动画效果分别是补间动画和帧动画,用一张图片实现的是使用补间动画,定义给出两个关键帧,通过一些算法将给定属性值在给定的时间内在两个关键帧间渐变. 动画布局                                                                               

Android游戏开发研究帧动画实现

 1.动画的原则框架        帧的动画帧的动画顾名思义,画就是帧动画. 帧动画和我们小时候看的动画片的原理是一样的,在同样区域高速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,事实上只是是N张图片在一帧一帧的切换罢了.对摄像头不清楚的请看p=992" rel="bookmark">Android研究之游戏开发摄像头更新        如图所看到的:人物行走动画的实现方式, 4帧行走动画在播放区域 一帧一帧向左切换播放 给人们一种播放动画的假象 .图片就动

Cocos2d-x Lua中实例:帧动画使用

下面我们通过一个实例介绍一下帧动画的使用,这个实例如下图所示,点击Go按钮开始播放动画,这时候播放按钮标题变为Stop,点击Stop按钮可以停止播放动画. 帧动画实例 下面我们再看看具体的程序代码,首先看一下看GameScene.lua文件,它的代码如下: [html] view plaincopy local isPlaying = false -- 播放标识                                                                    

TimePicker控件、帧动画、补间动画

1.TimePicker控件 最近感觉每个开发平台的控件基本都差不多,在Android中控件的事件和.net控件直接写事件有一定的区别,net事件可以直接界面进行事件的绑定哈.不过在Silverlight中,如果用MVVM设计模式的话,也可以自己为控件写Command命令的,可以取代控件的事件. TimePicker控件,也就是事件控件,可以用设置时间的.在页面拖入控件后,默认是显示系统时间的. 1 <TimePicker 2 android:id="@+id/timePicker1&qu