简单的补间动画代码

补间动画(Tween Animation)
补间动画与逐帧动画在本质上是不同的,逐帧动画通过连续播放图片来模拟动画的效果,而补间动画则是通过在两个关键帧之间补充渐变的动画效果来实现的。 补间动画的优点是可以节省空间。 目前Android应用框架支持的补间动画效果有以下5种。具体实现在android.view.animation类库中。
AlphaAnimation:透明度(alpha)渐变效果,对应标签。
TranslateAnimation:位移渐变,需要指定移动点的开始和结束坐标,对应标签。
ScaleAnimation:缩放渐变,可以指定缩放的参考点,对应标签。
RotateAnimation:旋转渐变,可以指定旋转的参考点,对应标签。
AnimationSet:组合渐变,支持组合多种渐变效果,对应标签。
补间动画的效果同样可以使用XML语言来定义,这些动画模板文件通常会被放在 Android 项目的res/anim/目录下。
下面是具体实现源码:
MainActivity.java封装实现的方法:
[java] view plain copy
  1. package com.example.lesson19_tween;

  2. import com.example.lesson19_tween.R;

  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.view.Menu;
  6. import android.view.View;
  7. import android.view.animation.Animation;
  8. import android.view.animation.AnimationUtils;
  9. import android.view.animation.ScaleAnimation;
  10. import android.view.animation.TranslateAnimation;
  11. import android.widget.ImageView;

  12. public class MainActivity extends Activity {

  13. private ImageView imageView;

  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.activity_main);

  18. imageView = (ImageView) findViewById(R.id.imageView1);
  19. }

  20. @Override
  21. public boolean onCreateOptionsMenu(Menu menu) {
  22. // Inflate the menu; this adds items to the action bar if it is present.
  23. getMenuInflater().inflate(R.menu.main, menu);
  24. return true;
  25. }

  26. // 透明动画
  27. public void alphaImpl(View v) {

  28. Animation animation = AnimationUtils.loadAnimation(this,
  29. R.anim.alpha_demo);
  30. imageView.startAnimation(animation);
  31. }

  32. // 旋转动画
  33. public void rotateImpl(View v) {
  34. Animation animation = AnimationUtils.loadAnimation(this,
  35. R.anim.rotate_demo);
  36. imageView.startAnimation(animation);
  37. }

  38. // 缩放动画
  39. public void scaleImpl(View v) {
  40. Animation animation = AnimationUtils.loadAnimation(this,
  41. R.anim.scale_demo);
  42. imageView.startAnimation(animation);
  43. }

  44. // 移动效果
  45. public void translateImpl(View v) {
  46. // XML文件
  47. Animation animation = AnimationUtils.loadAnimation(this,
  48. R.anim.translate_demo);

  49. animation.setRepeatCount(Animation.INFINITE);//循环显示
  50. imageView.startAnimation(animation);

  51. /*
  52. * 第一种 imageView.setAnimation(animation); animation.start();
  53. */
  54. // 第二种

  55. // Java代码
  56. /*
  57. * TranslateAnimation translateAnimation = new TranslateAnimation(0,
  58. * 200, 0, 0); translateAnimation.setDuration(2000);
  59. * imageView.startAnimation(translateAnimation);
  60. */
  61. }

  62. // 综合实现set_demo.xml中的动画
  63. public void setAll(View v) {
  64. Animation animation = AnimationUtils.loadAnimation(this,
  65. R.anim.set_demo);
  66. imageView.startAnimation(animation);
  67. }

  68. }

alpha_demo.xml
[html] view plain copy
  1. xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:interpolator="@android:anim/accelerate_decelerate_interpolator"
  3. android:fromAlpha="1.0"
  4. android:toAlpha="0.1"
  5. android:duration="2000"/>

你可能感兴趣的:(简单的补间动画代码)