继续上篇的animation,本篇用到的是AnimationListener,参考自iteye上的一个朋友的翻牌动画。AnimationListener主要是用来监听animation的,它接受animation的通知,每个通知声明了一个相关的事件。话不多说,上代码:
package com.kevin.animation;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
public class AnimationDemo extends Activity {
private ImageView img;
private boolean isFront = false;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
img = (ImageView)findViewById(R.id.imageView1);
// bind onclick event
img.setOnClickListener(new ImgOnClickListener());
}
class ImgOnClickListener implements OnClickListener{
@Override
public void onClick(View v) {
// load back animation config
Animation animation = AnimationUtils.loadAnimation(AnimationDemo.this, R.anim.back_scale);
// bind AnimationListener
animation.setAnimationListener(new AnimationListener() {
// Notifies the start of the animation.
@Override
public void onAnimationStart(Animation animation) {
System.out.println("onAnimationStart.");
}
// Notifies the repetition of the animation.
@Override
public void onAnimationRepeat(Animation animation) {
System.out.println("onAnimationRepeat");
}
// Notifies the end of the animation.
@Override
public void onAnimationEnd(Animation animation) {
System.out.println("onAnimationEnd");
if(isFront){
img.setImageResource(R.drawable.back);
isFront = false;
}else{
img.setImageResource(R.drawable.front);
isFront = true;
}
// load front animation config
img.setAnimation(AnimationUtils.loadAnimation(AnimationDemo.this, R.anim.front_scale));
}
});
// invoke animation immediately
img.startAnimation(animation);
}
}
}
分享到:
相关推荐
《Animation三维动画设计基础》是一本深入探讨三维动画制作技术的专业教材。三维动画设计是现代数字艺术中的一个重要领域,广泛应用于电影、电视、游戏、广告等多个行业。此书旨在为初学者提供一个全面理解并掌握三...
实现 CSS 动画的方式有多种,常见的有 transition、transform 和 animation 三种方式。 一、transition 实现渐变动画 transition 的属性有: * property:填写需要变化的 CSS 属性 * duration:完成过渡效果需要...
• 3、《Animation动画详解(三)—— 代码生成alpha、scale、translate、rotate、set及插值器动画》 • 4、《Animation动画详解(四)——ValueAnimator基本使用》 • 5、《Animation动画详解(五)——ValueAnimator...
CSS3(Cascading Style Sheets 第三代)是网页样式表语言,它极大地扩展了对网页元素的控制能力,其中最重要的一个特性就是引入了动画(Animation)。通过CSS3动画,开发者可以创建出丰富的交互式用户体验,使网页...
三、应用动画 将定义好的动画应用到元素上,我们需要设置`animation`属性。假设我们有一个用于翻页的容器元素`<div class="page"></div>`,可以这样写: ```css .page { animation-name: flipPage; animation-...
【标题】"飞机三维动画Aircraft 3D Animation"是一个专注于3D技术的项目,它展示了飞机在三维空间中的动态效果。此项目可能是为游戏、模拟器或视觉展示设计的,利用先进的计算机图形学技术来创造逼真的飞行场景。 ...
三、设置动画属性 为了使动画更具表现力,可以设置以下属性: - `setDuration(long duration)`: 设置动画的持续时间。 - `setStartOffset(long offset)`: 设置动画开始前的延迟时间。 - `setRepeatCount(int count)...
接着,我们将探讨骨架动画(Skeletal Animation)技术。这是一种常见的人物动画方式,通过定义角色的骨骼结构和关节,可以实现灵活的动作控制。书中可能会详细介绍如何创建和操纵骨架,以及如何应用蒙皮权重以影响...
在这个主题中,我们将深入探讨`animation`、`transform`以及`@keyframes`这三个核心概念。 ### 1. `animation`属性 `animation`属性是一个简写属性,用于设置多个与动画相关的属性,包括`animation-name`、`...
- **案例三**:实现自定义视图动画,通过编写代码控制动画的每一帧,实现高度定制化的动画效果。 4. **高级主题** - **自定义动画**:介绍如何创建自定义的动画类,以便实现更加独特和个性化的动画效果。 - **...
在Android开发中,动画(Animation)是提升用户体验和交互效果的重要手段。Android提供了多种动画机制,包括属性动画(Property Animation)、视图动画(View Animation)和框架动画(Frame Animation)。这篇博客...
在Android开发中,动画是提升用户体验的关键因素之一。...在实际开发中,结合其他动画技术和库,如Property Animation API或第三方库如NineOldAndroids,可以进一步扩展动画的潜力,满足各种复杂的动画需求。
C# 缓动动画类库(c# Easing animation) 及winform使用示例 文章详见: https://blog.csdn.net/surfsky/article/details/139511866 var ani = new Animator() .AddPath(AnimationType.ExponentialEaseOut, 100, 300...
属性动画包括三个主要组件:`ValueAnimator`、`ObjectAnimator`和`AnimatorSet`。 1. `ValueAnimator`是最基础的动画类,它可以改变任何可量化的值。通过设置`start()`和`end()`值,`ValueAnimator`会在两者之间...
例如,如果设置为3s,动画将完整执行三次秒。 3. `animation-timing-function`: 控制动画的速度曲线,可以是ease、linear、ease-in、ease-out、ease-in-out等预设值,也可以自定义函数。在大风车动画中,可能需要...
三、使用自定义动画 创建好自定义动画后,需要将其应用到视图上。这通常通过以下步骤完成: 1. 创建自定义动画的实例。 2. 设置动画参数,如持续时间、重复次数等。 3. 调用视图的`startAnimation(Animation)`方法...
Android Animation主要包括三种类型的动画:Property Animation、View Animation和Transition Animation。在本示例中,我们主要关注的是View Animation,它是早期版本(API Level 8及以下)中的动画机制,主要通过...
Simulink 3D Animation 是由 MathWorks 提供的一款强大的工具包,主要用于实现三维模型的实时仿真和可视化。它允许用户在 MATLAB 和 Simulink 的环境中创建高度交互式的 3D 场景,特别适用于机械系统、机器人学、...