Android(安卓)中Animation简单例子
16lz
2021-12-04
关于动画的实现,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"?>
缩放动画:
更多相关文章
- Android中的资源与国际化!
- 【Android】自定义控件之View原理与使用
- Android(安卓)Animation学习
- 【Android】Animation学习笔记
- Android之——自定义TextView
- Android(安卓)中Animation简单例子
- Android和iOS自带的人脸检测API
- Android(安卓)imageView 实现小红点(动画呼吸效果)
- Android自定义View总结(一)基础知识与实例