【补间动画示例】

代码中定义动画示例

public class MainActivity extends ListActivity {

private ImageView iv;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

String[] array = { "alpha", "trans", "scale", "rotate", "set",//

"只要 fillAfter = true,不管其他怎么设置,都是使用最后一帧",//

"只要 fillAfter = false,不管其他怎么设置,都是使用第一帧(没有进行任何缩放)", };

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new ArrayList<String>(Arrays.asList(array))));

iv = new ImageView(this);

iv.setImageResource(R.drawable.icon);

getListView().addHeaderView(iv);

}

@Override

protected void onListItemClick(ListView l, View view, int position, long id) {

switch (position) {

case 0:

Toast.makeText(this, "我是图片", Toast.LENGTH_SHORT).show();

break;

case 1:

alpha(iv);

break;

case 2:

trans(iv);

break;

case 3:

scale(iv);

break;

case 4:

rotate(iv);

break;

case 5:

set(iv);

break;

case 6:

scale(iv, new Random().nextBoolean(), new Random().nextBoolean(), true);//最后一帧,即fillBefore的值无效,fillAfter的值有效

break;

case 7:

scale(iv, new Random().nextBoolean(), new Random().nextBoolean(), false);//第一帧(没有进行任何缩放)

break;

}

}

//透明度动画

public void alpha(View view) {

AlphaAnimation aa = new AlphaAnimation(1.0f, 0.1f);//开始、结束时的透明度。1为全不透明,0为全透明

aa.setDuration(2000);//播放时间

aa.setRepeatCount(1);//重复次数,默认为0。【播放次数=重复次数+1】。设为Animation.INFINITE = -1 表示不停止的播放

aa.setRepeatMode(Animation.RESTART);//【REVERSE】倒序重复播放,【RESTART】重新开始执行(默认)

aa.setInterpolator(new AccelerateInterpolator());//加速

view.startAnimation(aa);

}

//位移动画

public void trans(View view) {

TranslateAnimation ta = new TranslateAnimation(Animation.RELATIVE_TO_SELF, -0.5f, Animation.RELATIVE_TO_SELF, 0.5f,//

Animation.RELATIVE_TO_SELF, -1f, Animation.RELATIVE_TO_PARENT, 1f); //fromXType, fromXValue, toXType, toXValue【开始/结束】时【相对谁】的距离

ta.setDuration(1000);

ta.setRepeatCount(Animation.INFINITE);

ta.setRepeatMode(Animation.REVERSE);

ta.setInterpolator(new BounceInterpolator());//动画结束的时候弹起

view.startAnimation(ta);

}

//缩放动画

public void scale(View view) {

ScaleAnimation sa = new ScaleAnimation(0.5f, 2.5f, 0.5f, 1.5f, //【开始/结束时x/y的缩放比例】

Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); //【x/y缩放时所使用的模式和中心点】

sa.setDuration(2000);

sa.setInterpolator(new AccelerateDecelerateInterpolator());//先加速后减速

view.startAnimation(sa);

}

//旋转动画

public void rotate(View view) {

RotateAnimation ra = new RotateAnimation(0, 360 * 5, //【开始/结束时旋转的角度】

Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); //【x/y旋转时所使用的模式和中心点】

ra.setDuration(1000);

ra.setInterpolator(new LinearInterpolator());//匀速

view.startAnimation(ra);

}

//组合动画

public void set(View view) {

AnimationSet set = new AnimationSet(true);//是否使用共同的插值器

//位移

TranslateAnimation ta = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, //

Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, 0.5f);

ta.setDuration(500);

//缩放

ScaleAnimation sa = new ScaleAnimation(1f, 2f, 1f, 1.5f, Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, 0.5f);

sa.setDuration(500);

sa.setStartOffset(1000);//延迟时间 When this Animation should start, in milliseconds from the start time of the root AnimationSet

//旋转

RotateAnimation ra = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f);

ra.setDuration(500);

ra.setStartOffset(2000);

//将上面这些动画放到集合中

set.addAnimation(ta);

set.addAnimation(sa);

set.addAnimation(ra);

//        set.setFillEnabled(true);

set.setFillAfter(true);

//        set.setFillBefore(false);

view.startAnimation(set);

}

public void scale(View view, boolean fillEnable, boolean fillBefore, boolean fillAfter) {

ScaleAnimation sa = new ScaleAnimation(0.2f, 3f, 0.2f, 3f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

sa.setDuration(200);

sa.setFillEnabled(fillEnable);

sa.setFillBefore(fillBefore);

sa.setFillAfter(fillAfter);

view.startAnimation(sa);

}

}

XML中定义动画示例

public class SecondActivity extends ListActivity {

int[] array_id = { R.anim.alpha_in, R.anim.disappear_bottom_right_in, R.anim.disappear_bottom_right_out, R.anim.disappear_top_left_in,

R.anim.disappear_top_left_out, R.anim.drawroll_ani_in, R.anim.drawroll_ani_out, R.anim.fade_in, R.anim.fade_out,

R.anim.flip_horizontal_in, R.anim.flip_horizontal_out, R.anim.flip_vertical_in, R.anim.flip_vertical_out, R.anim.gallery_in, R.anim.grow_from_top,

R.anim.left_in, R.anim.left_out, R.anim.mi_laucher_alpha, R.anim.mi_laucher_del_done, R.anim.mi_laucher_del_down, R.anim.mi_laucher_out,

R.anim.mi_laucher_scale_in, R.anim.mi_laucher_scale_out, R.anim.pophidden_anim, R.anim.popshow_anim, R.anim.push_left_in, R.anim.push_left_out,

R.anim.push_up_in, R.anim.push_up_out, R.anim.rbm_in_from_left, R.anim.rbm_out_to_left, R.anim.refreshable_list_rotate, R.anim.right_in,

R.anim.right_out, R.anim.shrink_from_bottom, R.anim.slide_down_out, R.anim.slide_left, R.anim.slide_right, R.anim.slide_up_in, R.anim.small_2_big,

R.anim.umeng_fb_slide_in_from_left, R.anim.umeng_fb_slide_in_from_right, R.anim.umeng_fb_slide_out_from_left, R.anim.umeng_fb_slide_out_from_right,

R.anim.umeng_socialize_fade_in, R.anim.umeng_socialize_fade_out, R.anim.umeng_socialize_shareboard_animation_in,

R.anim.umeng_socialize_shareboard_animation_out, R.anim.umeng_socialize_slide_in_from_bottom, R.anim.umeng_socialize_slide_out_from_bottom,

R.anim.unzoom_in, R.anim.unzoom_out, R.anim.welcome_fade_in_scale, R.anim.welcome_fade_out, R.anim.zoom_enter, R.anim.zoom_exit };

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

String[] array_name = new String[array_id.length];

for (int i = 0; i < array_id.length; i++) {

array_name[i] = getResources().getResourceName(array_id[i]).replace(getPackageName() + ":anim/", "");

}

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new ArrayList<String>(Arrays.asList(array_name))));

}

@Override

protected void onListItemClick(ListView l, View v, int position, long id) {

v.setAnimation(AnimationUtils.loadAnimation(this, array_id[position]));

}

}

XML示例

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"

android:oneshot="true" >

<translate

android:duration="1000"

android:fillAfter="true"

android:fromYDelta="0"

android:interpolator="@android:anim/accelerate_decelerate_interpolator"

android:toYDelta="100" />

<alpha

android:duration="1000"

android:fromAlpha="0.0"

android:toAlpha="1.0" />

</set>

附件列表

时间: 2024-11-03 22:00:04

【补间动画示例】的相关文章

补间动画 Interpolator 简介 示例

简介 补间动画的原理: 每次绘制视图时View所在的[ViewGroup]中的drawChild函数获取该View的Animation的值,然后调用canvas.concat (transformToApply.getMatrix()),通过[矩阵运算]完成动画帧,如果动画没有完成,继续调用[invalidate()]函数,启动下次绘制来驱动动画.动画过程中的帧之间间隙时间是绘制函数所消耗的时间,可能会导致动画消耗比较多的CPU资源,最重要的是,动画改变的只是显示,并不能响应事件. 主要特点:

深入学习Phaser补间动画

Tweens是什么? Tweens通常被称为补间动画.补间动画是指在确定好两个关键帧之后,由计算机自动生成这两帧之间插补帧,从而实现动画的过程.例如,物体从当前位置在两秒内向右移动200个像素,只要设置好目标位置(当前位置的右边200像素)和时长(两秒),则计算机会自动生成补间动画,在两秒内使物体从当前位置移到目标位置. 创建一个Tween 补间的目标对象 最常见的创建一个补间动画的语句如下所示: var tween =this.game.add.tween(this.sprite).to({ 

Android中的补间动画(tween)的简单使用

相对帧动画,补间动画(tween)可以这么理解:我们不必像帧动画一样指定动画的每一帧,只需定义一个动画的开始和结束关键帧,而中间变化的帧由系统帮我们计算. tween动画可以分为下面几种: AlphaAnimation(透明渐变动画): 示例:res/anim/alpha.xml <?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.andr

Android基础笔记(十)- 帧动画、补间动画详解、对话框

帧动画 补间动画Tween Animation 对话框以及面试中的注意点 帧动画 帧动画很简单,我们首先看一下Google官方解释This is a traditional animation in the sense that it is created with a sequence of different images. 意思表达的很明了,一个传统的动画是由一组不同的图片组成的.帧动画,就像GIF图片,通过一系列Drawable依次显示来模拟动画的效果. 创建一帧动画分为一下几步(支持4

快速上手Unity中最好的补间动画插件DFTween

?? 出处:http://blog.csdn.net/u010019717 author:孙广东      时间:2015.3.17   23:00 DFTween 是一个在 Unity 游戏引擎中快速和容易使用的animation动画库.它支持任何对象的tweening补间的属性, 并可以轻松地进行工作与您自己自定义数据类型.API 很简单但是功能非常强大,使其易于创建复杂的tweens补间和sequences序列.它已被优化从优秀性能,同时具有低内存和低CPU 要求. ·快速 查阅在线演示,

【Android - 进阶】之Animation补间动画

补间动画也叫View动画,它只能针对View进行动画操作,且补间动画操作的只是View中可见的部分,即只操作界面,对于可点击区域等都不会进行操作. 在Android中,补间动画的顶级类是Animation.补间动画包括对View的透明度.缩放.平移.旋转进行动画操作,对应的JAVA类分别是AlphaAnimation.ScaleAnimation.TranslateAnimation.RotateAnimation. Android还提供了一个动画集合AnimationSet,可以将多个动画单体

Android动画效果之Tween Animation(补间动画)(一)

前言: 最近公司项目下个版本迭代里面设计了很多动画效果,在以往的项目中开发中也会经常用到动画,所以在公司下个版本迭代开始之前,抽空总结一下Android动画.今天主要总结Tween Animation(补间动画). Tween Animation(补间动画): Tween动画,通过对View的内容进行一系列的图形变换 (包括平移.缩放.旋转.改变透明度)来实现动画效果.动画效果的定义可以采用XML来做也可以采用编码来做. 动画类型 XML配置方式 Java代码实现方式 渐变透明度动画效果 <al

Android补间动画(附带Demo案例)

Demo源码 请点击:Github-Animation 补间动画(View Animation) 分类:透明动画.旋转动画.位移动画.缩放动画.组合动画 写法:代码中动态设置属性.使用xml文件定义属性 两种方式 补间动画不会改变控件的位置 如果需要使用XML方式定义补间动画 首先,在资源路径 res 下创建目录:anim(名字不能错) 其次,在 res/anim 目录下创建xml文件,根节点根据对应的补间动画定义(文章中有具体的代码示例) 透明动画(AlphaAnimation) 1. 代码示

Android开发之补间动画、

四种补间动画: 1.透明: 2.缩放: 3.位移: 4.旋转: 1 //点击按钮 实现iv 透明的效果 动画 2 public void click1(View v) { 3 //1.0意味着着完全不透明 0.0意味着完全透明 4 AlphaAnimation aa = new AlphaAnimation(1.0f, 0.0f); 5 aa.setDuration(2000); //设置动画执行的时间 6 aa.setRepeatCount(1); //设置重复的次数 7 aa.setRepe