- 浏览: 558415 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
北月与南安:
哥哥不要秀我,答案是11.38,你算出来36.43,要求N个点 ...
平均距离 -
xiao_android_jun:
[color=red][ size=xx-small ...
Android 之 进程的概念介绍 -
明子健:
小伙子,很有前途哦
《将博客搬至CSDN》 -
1140566087:
dugujiujian 写道R.layout.simple_s ...
Android 之 下拉(Spinner) 组件示例 -
dugujiujian:
R.layout.simple_spinner_dropdow ...
Android 之 下拉(Spinner) 组件示例
Tween 补间动画
1、优点:节省磁盘空间;
2、缺点:动画很复杂的时候无法自动生成中间图像;例如电影画面的组成,画面复杂,无法 下一步;
3、Android 提供的 4 种 补间动画效果:移动、旋转、缩放和透明度渐变;
4、移动补间动画:
实现方式:
xml文件配置
编码配置
5、提示:补间动画文件存放在res/anim 或者 res/drawable 下面
补间动画 -- 设置透明度: alpha
<?xml version="1.0" encoding="utf-8"?> <!-- 透明渐变动画 --> <!-- 说明: android:fromAlpha 代表起始的alpha值,浮点值,0.0 和 1.0之间 android:toAlpha 代表结尾的值,浮点值,0.0 和 1.0 之间 --> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="8000" android:fromAlpha="0.0" android:repeatCount="infinite" android:toAlpha="1.0" > </alpha>
旋转补间动画 -- rotate
<?xml version="1.0" encoding="utf-8"?> <!-- 旋转补间动画测试 --> <!-- 说明: rotate 旋转动画,java 中对象为:RotateAnimation android:fromDegrees 代表起始角度、浮点值,单位:度 android:toDegrees 代表结尾角度,浮点值,单位:度 android:pivotX 代表旋转中心的 X 坐标值; android:pivotY 代表旋转中心的 Y 坐标值; android:fillAfter 执行完后是否保持最后的状态; android:duration 代表动画持续的时间,单位毫秒 旋转补间动画的渲染模式: android:interpolator="@android:anim/accelerate_interpolator" 设置动画渲染器为加速动画(动画播放中越来越快) android:interpolator="@android:anim/decelerate_interpolator" 设置动画渲染器为减速动画(动画播放中越来越慢) android:interpolator="@android:anim/accelerate_decelerate_interpolator" 设置动画渲染器为先加速再减速(开始最快,逐渐减慢) 提示:默认为匀速 --> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:fromDegrees="0" android:toDegrees="360" android:pivotX = "50%" android:pivotY="50%" android:duration="2000" > </rotate>
缩放补间动画:scale
<?xml version="1.0" encoding="utf-8"?> <!-- 缩放补间动画 --> <!-- 说明: android:fromXScale : 表示开始时 X 的缩放比例 android:fromYScale : 表示开始时 Y 的缩放比例 android:toXScale : 表示结束时 X 的缩放比例 android:toYScale : 表示结束时 Y 的缩放比例 android:pivotX : 表示沿 X 轴方向缩放的支点位置,50% 表示中心位置; android:pivotY : 表示沿 Y 轴方向缩放的支点位置,50% 表示中心位置; 缩放比例的取值规则: 0.0 : 表示缩放到没有; 1.0 : 表示正常不收缩 >1.0: 表示将组件放大到相应的比例; <1.0: 表示将组件收缩到相应的比例; --> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fromXScale="0.0" android:fromYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:toXScale="2.0" android:toYScale="2.0" > </scale>
移动补间动画:
<?xml version="1.0" encoding="utf-8"?> <!-- 移动补间动画 , 测试案例 --> <!-- 说明: android:fromXDelta 属性代表起始X方向的位置 android:toXDelta 代表结尾X方向上的位置 android:fromYDelta 代表起始方向Y 的位置 android:toYDelta 属性代表结尾Y 方向的位置 android:fillAfter 是否定格在尾端 android:repeatCount 循环次数 android:duration 执行时间 android:interpolator 运行速度定义:匀速,快,慢 等.... --> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:fillAfter="true" android:fromXDelta = "0" android:fromYDelta = "0" android:toXDelta = "320" android:toYDelta = "480" android:duration = "2000" android:repeatCount = "5" > </translate>
在代码中使用补间动画达到对应的效果:
package com.sun.tween; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; import android.view.animation.RotateAnimation; import android.view.animation.ScaleAnimation; import android.view.animation.TranslateAnimation; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends Activity { private ImageView image; private Button translate,scale,rotate,alpha,heart,bird; private ScaleAnimation large,small; // 缩放动画对象 private float curX = 0; private float curY = 0; private float nextX ,nextY; // 初始化 public void init(){ translate = (Button) findViewById(R.id.button1); scale = (Button) findViewById(R.id.button2); rotate = (Button) findViewById(R.id.button3); alpha = (Button) findViewById(R.id.button4); heart = (Button) findViewById(R.id.heart); bird = (Button) findViewById(R.id.bird); translate.setOnClickListener(listener); scale.setOnClickListener(listener); rotate.setOnClickListener(listener); alpha.setOnClickListener(listener); heart.setOnClickListener(listener); bird.setOnClickListener(listener); } // 入口 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); image = (ImageView) findViewById(R.id.image); } // 点击事件监听器 private View.OnClickListener listener = new View.OnClickListener() { public void onClick(View v) { if(v.getId() == R.id.button1){ translateAction(); return; } if(v.getId() == R.id.button2){ scaleAction(); return; } if(v.getId() == R.id.button3){ rotateAction(); return; } if(v.getId() == R.id.button4){ alphaAction(); return; } if(v.getId() == R.id.heart){ heartAction(); return; } if(v.getId() == R.id.bird){ birdAction(); return; } } }; /*==================================Start 小鸟飞翔 ===============================================================*/ /** * 小鸟飞翔效果 -- 帧动画实现翅膀拍动,位置右 补间 动画实现 */ public void birdAction(){ // 设置 图片资源为 帧动画资源 AnimationDrawable ad = (AnimationDrawable) getResources().getDrawable(R.drawable.bird_fly); image.setImageDrawable(ad); ad.start(); // 补间动画实现 -- 移动 /* Timer() 定时器 TimerTask 定时任务 */ new Timer().schedule(new TimerTask(){ // 定时的时间到了执行的任务 public void run() { Message message = new Message(); message.what = 0x1; // 0x 表示该数为 整数 , 消息ID 编号 handler.sendMessage(message); Log.i("msg", "run()... 执行一次"); }},0, 200); } // 消息处理机制,执行对应的任务 private Handler handler = new Handler(){ public void handleMessage(Message msg) { super.handleMessage(msg); if(msg.what == 0x1){ if(nextX>300){ curX = nextX = 0; // 从头开始 }else{ nextX+=5; // 固定水平移动 } // 计算下一步 Y 的坐标 nextY = (float) (curY+(Math.random()*10-5)); // 移动补间动作 Animation trans = new TranslateAnimation(curX, nextX, curY, nextY); trans.setDuration(2000); image.setAnimation(trans); // 启动 // 交换坐标数据 curX = nextX; curY = nextY; } } }; /*==================================End 小鸟飞翔 ===========================================================================*/ /** * 移动补间动画测试 */ public void translateAction(){ // 加载补间动画文件 TranslateAnimation ta = (TranslateAnimation) AnimationUtils.loadAnimation(MainActivity.this, R.drawable.translate); image.setAnimation(ta); // 将动画应用到组件上 /* 代码实现 */ /* Animation translate = new TranslateAnimation(0, 320, 0,480); translate.setDuration(5000); image.setAnimation(translate); */ } /** * 缩放补间动画测试 */ public void scaleAction(){ // 加载动画文件 ScaleAnimation sa = (ScaleAnimation) AnimationUtils.loadAnimation(MainActivity.this,R.drawable.scale); image.startAnimation(sa); // 应用到组件上 /* 代码实现 */ /* Animation scale = new ScaleAnimation(0f, 3f, 0f, 3f); scale.setDuration(5000); image.setAnimation(scale); */ } /** * 旋转补间动画测试 */ public void rotateAction(){ // 加载动画文件 RotateAnimation ra = (RotateAnimation) AnimationUtils.loadAnimation(MainActivity.this,R.drawable.rotate); // 应用动画 image.setAnimation(ra); /* 代码实现 */ /* Animation rotate = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); rotate.setDuration(5000); image.setAnimation(rotate); */ } /** * 透明渐变动画测试 */ public void alphaAction(){ // 加载动画文件 AlphaAnimation aa = (AlphaAnimation) AnimationUtils.loadAnimation(MainActivity.this, R.drawable.alpha); image.setAnimation(aa); /* 代码实现 */ /* Animation alpha = new AlphaAnimation(0.0f, 1.0f); alpha.setDuration(5000); image.startAnimation(alpha); */ } /** * 心型效果 -- 心动的感觉 */ public void heartAction(){ // 加载 缩放 动画文件 large = (ScaleAnimation) AnimationUtils.loadAnimation(MainActivity.this, R.drawable.scale); small = (ScaleAnimation) AnimationUtils.loadAnimation(MainActivity.this, R.drawable.scale_small); // 设置动画监听器 large.setAnimationListener(animationListener); small.setAnimationListener(animationListener); // 初始动作 image.setAnimation(large); } // 补间动画监听器 private AnimationListener animationListener = new AnimationListener() { // 动画开始时调用 public void onAnimationStart(Animation animation) { Log.i("msg","onAnimationStart()..."); } // 动画重复调用 public void onAnimationRepeat(Animation animation) { Log.i("msg","onAnimationRepeat()..."); } // 动画结束调用 public void onAnimationEnd(Animation animation) { // 使用 hashCode 进行匹配对应关系 if(animation.hashCode() == large.hashCode()){ image.startAnimation(small); }else{ image.startAnimation(large); } Log.i("msg", "onAnimationEnd()..."); } }; }
- tween.rar (1.1 MB)
- 下载次数: 16
发表评论
-
Android 之 网络访问服务器,解析JSON数据
2014-03-28 22:50 3407提示:在访问网络,或者服务器的数据一定要注意 网络权限的声明: ... -
Android 之 AsyncTask 异步任务
2014-03-20 08:44 3520Android ... -
Android 之 Looper Handler Message 之间的关系
2014-03-19 10:16 3664Android 的消息 ... -
Android 之 多线程与Socket联合使用案例
2014-03-19 10:15 2669多线 ... -
Android 之 多线程和Socket套接字的使用介绍
2014-03-19 10:15 4882And ... -
Android 之 实现Runnable 接口与继承Thread的区别
2014-03-19 10:15 2197实现Runnable 接口 相 ... -
Android 之 GSON解析JSON数据
2014-03-19 10:14 4488... -
Android 之 使用Pull 解析xml文件
2014-03-18 21:04 1043/** * 使用Pull进行 xml 文件的解析 ... -
Android 之 使用DOM解析xml文件
2014-03-18 21:02 2741DOM 解析 xml 格式的文件 1、 xml简介:xml ... -
Android 之 百度API 密钥安全码生成
2014-03-04 22:29 2411近期要做个关于旅游助手的应用,开始接触百度API了。大神们 ... -
Android 之 EditText属性用法介绍
2014-01-06 23:49 3989EditText的属性 EditText继承关系:View-- ... -
Android 之 自定义适配器
2014-01-08 10:40 1765自定义适配器 1、实现 * 自定义适配器要继承 BaseA ... -
Android 之 自定义控件用法介绍
2014-01-08 10:40 1715自定义效果:实现:图片和文字混合 首先创建需要组合的子布局: ... -
Android 之 资源自适应与国际化
2014-01-08 10:40 3076<!-- 国际化和资源自适应 ... -
Android 之 Parcelable 序列化
2014-01-08 10:41 2697/* 序列化 * * 作 ... -
Android 之 五大布局案例
2014-01-08 10:41 21321、LinearLayout 线性布局例子: <Lin ... -
Android 之 通知Notification
2014-03-03 22:30 3890Notification 和 NotificationMana ... -
Android 之 手机全屏显示
2014-03-03 22:30 2340/* 1、全屏状态的显示 介绍:Android 中提供了Wi ... -
Android 之 拦截手机短信并自动转发
2014-03-03 22:29 5436拦截短信和发送短信都需要相关的权限: <?xml ve ... -
Android 之 将RAW资源文件写入SD卡工具类
2014-03-01 10:09 3608package com.sun.coptfiletosd; ...
相关推荐
在Android开发中,补间动画(Tween Animation)是一种常见的视觉效果技术,用于为视图对象创建平滑的过渡效果。补间动画通过在一段时间内改变特定属性(如大小、透明度、位置或旋转角度)来实现动态效果。下面将详细...
补间动画(Tween Animation)是Android提供的基本动画类型,它通过对对象的透明度、大小、位置或旋转等属性进行平滑过渡来实现视觉效果。本篇文章将深入探讨Android中的Tween Animation,包括其原理、使用方法以及...
在Android开发中,补间动画(Tween Animation)是动画系统的一部分,用于实现对象在屏幕上位置、大小、透明度等属性的变化。补间动画基于帧,通过连续改变对象属性来创建平滑过渡效果,使得视觉上产生动画的效果。...
补间动画(Tween Animation)是Android提供的一种基础动画机制,主要用于对象位置、大小、旋转和透明度等属性的变化,从而实现平滑过渡的效果。本文将深入探讨Android补间动画的原理、使用方法及应用场景。 一、补...
补间动画(Tween Animation)是Android提供的一种基础动画形式,用于平滑地改变一个对象的视觉属性,如位置、大小、透明度等。本资源主要探讨如何在Android中创建自定义的补间动画。 一、补间动画基础 补间动画基于...
本文将深入探讨两种主要的动画类型:帧动画(Frame Animation)和补间动画(Tween Animation),并提供相应的代码实现示例。 帧动画是通过连续播放一系列静态图像来创建动态效果的一种方式。在Android中,我们可以...
Tween补间动画是Android系统提供的一种基本动画类型,主要用于改变对象在屏幕上的位置、大小、透明度等属性,它通过平滑过渡来实现对象的变化,给用户带来流畅的视觉效果。本篇文章将深入探讨Tween补间动画的软编码...
在Android开发中,补间动画(Tween Animation)是一种常见的视觉效果技术,用于为用户界面增添动态元素,提高用户体验。补间动画得名于“补间”这个概念,它是指通过计算两个关键帧之间的中间状态来生成平滑的过渡...
Tween动画,又称为补间动画,是Android提供的基础动画系统的一部分,允许开发者对视图对象进行平移、旋转、缩放和改变透明度等操作。本篇将深入探讨如何通过硬编码方式实现Tween动画,并通过源码分析增强理解。 一...
补间动画(Tween Animation)是Android系统提供的一种基础动画机制,主要用于对象属性的变化,如平移、旋转、缩放和透明度变化等。本篇将深入探讨Android补间动画的概念、实现方式以及如何通过提供的`...
在Android开发中,补间动画(Tween Animation)是实现动态效果的一种重要手段,它通过平移、旋转、缩放和改变透明度等属性变化来创建流畅的视觉效果。本篇文章将深入探讨Android补间动画的基本概念、使用方法及其...
在Android开发中,补间动画(Tween Animation)是一种常见的视觉效果技术,用于为用户界面增添动态元素,提高用户体验。补间动画主要用于改变View对象的位置、大小、透明度等属性,通过平滑过渡来实现动画效果。这个...
属性动画(Property Animation)、帧动画(Frame Animation)和补间动画(Tween Animation)是Android系统提供的三种主要的动画机制,每种都有其独特的应用场景和优势。本合集的"属性动画帧动画补间动画合集"是一个...
在Android应用开发中,补间动画(Tween Animation)是一种基础且强大的工具,它允许开发者为UI元素添加平滑的过渡效果。本示例主要讲解如何在Activity切换时使用补间动画,以提升用户体验并增强应用的视觉吸引力。 ...
在Android中,补间动画分为两种:补间动画(Tween Animation)和帧动画(Frame Animation)。 2. 自定义补间动画:虽然Android提供了许多预设的动画效果,但有时候这些预设效果无法满足开发者的需求。在这种情况下...
补间动画(Tween Animation)是Android系统提供的基础动画类型,它通过平移、旋转、缩放和改变透明度等效果来实现对象的动态变化。本文将详细介绍补间动画的基本使用方法,包括设置动画属性、创建XML动画资源和在...
在Android开发中,补间动画(Tween Animation)是一种常见的视觉效果技术,用于让视图对象在一定时间内平滑地从一种状态过渡到另一种状态。补间动画的核心是改变对象的属性,如位置、大小、透明度等,通过一系列连续...
在Android开发中,补间动画(Tween Animation)是一种常见的视觉效果技术,用于为用户界面元素创造动态过渡。本文将深入探讨Android补间动画的四个主要类型:平移、旋转、缩放和渐变,并提供详细实现方法。 首先,...
补间动画(Tween Animation)是Android提供的一种动画机制,它通过对视图进行连续的图像变换来创建动态效果。本篇将深入探讨补间动画的基础知识,包括其原理、分类、实现方式以及效果展示。 ### 原理 补间动画的...