阅读更多                            Tween 补间动画
1、优点:节省磁盘空间;
2、缺点:动画很复杂的时候无法自动生成中间图像;例如电影画面的组成,画面复杂,无法    下一步;
3、Android 提供的 4 种 补间动画效果:移动、旋转、缩放和透明度渐变;
4、移动补间动画:
   实现方式:
            xml文件配置  
            编码配置

5、提示:补间动画文件存放在res/anim 或者 res/drawable 下面



补间动画 -- 设置透明度: alpha
<?xml version="1.0" encoding="utf-8"?>


旋转补间动画 -- rotate

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



缩放补间动画:scale

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



移动补间动画:

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



在代码中使用补间动画达到对应的效果:

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

更多相关文章

  1. 关于Android的Animation使用(XML)
  2. Android(安卓)多个Fragment嵌套导致的三大BUG
  3. android的动画相关参数说明
  4. Android(安卓)Reveal圆形Activity转场动画
  5. Android上webview界面切换动画效果
  6. Android动画之属性动画(Property Animation)(三)
  7. android仿美团底部导航栏的点击效果——揭露动画
  8. Android(安卓)Animation 动画的使用方法和介绍
  9. Android中Bitmap,byte[],Drawable相互转化

随机推荐

  1. Android(安卓)EditText/TextView使用Span
  2. Android中播放GIF图片动画
  3. android基础入门布局讲解(2)
  4. 2011.06.07——— android 1.6 launcher
  5. 博客园Android客户端V3.0
  6. 理解 Android(安卓)本地数据存储 API
  7. Android鍏ラ棬鏁欑▼
  8. Android开发指南(37) —— Data Backup
  9. Fiddler 跟踪 Android(安卓)数据包
  10. Android(安卓)5.0 Material 自定义Dialog