关于动画的实现,Android提供了Animation,在Android SDK介绍了2种Animation模式:

1. Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果,即是一种渐变动画;

2. Frame Animation:顺序播放事先做好的图像,是一种画面转换动画。

动画类型

下面先来看看Android提供的动画类型。Android的animation由四种类型组成

在XML文件中:

  • alpha        渐变透明度动画效果
  • scale        渐变尺寸伸缩动画效果
  • translate  画面转换位置移动动画效果
  • rotate      画面转移旋转动画效果

动画的实现方法:

           animation可以定义在xml中,也 可以在类中动态定义,和控件的定义类似。

这里用的是静态定义。

           首先需要在项目的res文件夹 中新建anim文件夹,然后在其中添加动画文件。

在类中调用的时候,要用到下面的两个语句:

nimation ani = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.alpha_anim); View.startAnimation(ani);


今天的例子要实现的是TweenAnimation,类似于Flash中的补间动画。


最终效果:



很小的一个bug却卡了一个晚上(xml文件定义的时候,尖括号位置敲错了),如果再给我遇到这样的bug,

我会轻轻地对它说:艹!

代码明天上...睡觉。


代码清单:

主Activity:

package com.example.animationtest;   import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.MenuItem; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView;  public class AnimationActivity extends Activity { private ImageView myImageView;     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_animation);         myImageView=(ImageView)findViewById(R.id.myImageView);     }  @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0,1,1,R.string.scale);   menu.add(0,2,2,R.string.rotate);   menu.add(0,3,3,R.string.alpha);    menu.add(0,4,4,R.string.translate);  menu.add(0,5,5,R.string.exit);  return true;   } @Override     public boolean onMenuItemSelected(int featureId, MenuItem item) {     // TODO Auto-generated method stub     if(item.getItemId()==1) scaleAnim();   if(item.getItemId()==2) rotateAnim(); if(item.getItemId()==3) alphaAnim(); if(item.getItemId()==4) transAnim(); if(item.getItemId()==5) finish();     return super.onMenuItemSelected(featureId, item);     }  private void rotateAnim() { // TODO Auto-generated method stub Animation ani = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.rotate_anim); myImageView.startAnimation(ani); } private void alphaAnim() { // TODO Auto-generated method stub Animation ani = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.alpha_anim); myImageView.startAnimation(ani); }  private void scaleAnim() { // TODO Auto-generated method stub Animation ani = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.scale_anim); myImageView.startAnimation(ani);  }   private void transAnim() { Animation ani = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.translate_anim); myImageView.startAnimation(ani); }  } 


布局文件:

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

动画文件(注意尖括号的位置,格式一定要正确!)

移动动画:

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

旋转动画:

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

透明度动画:

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

缩放动画:


更多相关文章

  1. Android中的资源与国际化!
  2. 【Android】自定义控件之View原理与使用
  3. Android(安卓)Animation学习
  4. 【Android】Animation学习笔记
  5. Android之——自定义TextView
  6. Android(安卓)中Animation简单例子
  7. Android和iOS自带的人脸检测API
  8. Android(安卓)imageView 实现小红点(动画呼吸效果)
  9. Android自定义View总结(一)基础知识与实例

随机推荐

  1. Android判断网络是否连接
  2. AChartEngine应用之PieChart(饼图)
  3. Unable to load class 'org.gradle.api.i
  4. About sdk manager :error null
  5. 自动化脚本
  6. Android(安卓)Toast 简单封装
  7. JunitTest
  8. Ubuntu 10.04 LTS 安装 sun-java6-jdk 错
  9. Caused by: java.lang.NullPointerExcept
  10. [Android]检查当前手机是否有网络