博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发_Animation
阅读量:4351 次
发布时间:2019-06-07

本文共 5289 字,大约阅读时间需要 17 分钟。

新建项目:

项目结构:

p1.png是自己添加进去的,当然也可以使用其他图片

main.xml

1 
2
8
12
13
19
20
26
27
28
37

Main.java

1 package com.b510;  2  3 import android.app.Activity;  4 import android.os.Bundle;  5 import android.util.Log;  6 import android.view.View;  7 import android.view.ViewGroup;  8 import android.view.View.OnClickListener;  9 import android.view.animation.AlphaAnimation; 10 import android.view.animation.Animation; 11 import android.view.animation.Animation.AnimationListener; 12 import android.widget.Button; 13 import android.widget.ImageView; 14 15 public class Main extends Activity {
16 private static final String TAG="Main"; 17 /** 添加图片 */ 18 private Button addButton; 19 /** 删除图片 */ 20 private Button deleteButton; 21 /** 显示图片 */ 22 private ImageView imageView; 23 /** RaletvieLayout布局,他是包含了
Button,ImageView控件,定义在main.xml文件中 */ 24 private ViewGroup viewGroup; 25 26 /** Called when the activity is first created. */ 27 @Override 28 public void onCreate(Bundle savedInstanceState) {
29 super.onCreate(savedInstanceState); 30 setContentView(R.layout.main); 31 // 从main.xml文件中找到对应的控件 32 addButton = (Button) findViewById(R.id.btn_add); 33 deleteButton = (Button) findViewById(R.id.btn_delete); 34 imageView = (ImageView) findViewById(R.id.iv_image); 35 viewGroup = (ViewGroup) findViewById(R.id.layoutId); 36 37 deleteButton.setOnClickListener(new OnClickListener() {
38 39 @Override 40 public void onClick(View v) {
41 // 申明一个AlphaAnimation对象,从完全不透明到完全透明 42 AlphaAnimation alphaAnimation = new AlphaAnimation(1.0f, 0.0f); 43 // 设置动画持续时间为2秒钟 44 alphaAnimation.setDuration(2000); 45 // 执行动画前,延迟0.5秒钟 46 alphaAnimation.setStartOffset(500); 47 //为Animation对象设置监听器 48 alphaAnimation.setAnimationListener(new AnimationListener() {
49 @Override 50 public void onAnimationStart(Animation animation) {
51 Log.i(TAG, "start"); 52 } 53 54 @Override 55 public void onAnimationRepeat(Animation animation) {
56 Log.i(TAG, "repeat"); 57 } 58 59 @Override 60 public void onAnimationEnd(Animation animation) {
61 Log.i(TAG, "end"); 62 //从viewGroup中移除imageView 63 viewGroup.removeView(imageView); 64 } 65 }); 66 imageView.startAnimation(alphaAnimation); 67 } 68 }); 69 70 addButton.setOnClickListener(new OnClickListener() {
71 @Override 72 public void onClick(View v) {
73 // 申明一个AlphaAnimation对象,从完全透明到完全不透明 74 AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f); 75 // 设置动画持续时间为2秒钟 76 alphaAnimation.setDuration(2000); 77 // 执行动画前,延迟0.5秒钟 78 alphaAnimation.setStartOffset(500); 79 viewGroup.addView(imageView); 80 // 启动动画 81 imageView.startAnimation(alphaAnimation); 82 } 83 }); 84 } 85 }

运行效果

1.初始化

2.点击删除图片按钮

3.点击添加图片按钮

4.后台运行情况

当我们点击删除按钮的时候,android系统会自动调用onAnimationStart()方法,再调用onAnimationEnd()方法。

 

 

9.5  AlphaAnimation类:透明度变化动画类

AlphaAnimation类是Android系统中的透明度变化动画类,用于控制View对象的透明度变化,该类继承于Animation类。AlphaAnimation类中的很多方法都与Animation类一致,该类中最常用的方法便是AlphaAnimation构造方法。

【基本语法】public AlphaAnimation (float fromAlpha, float toAlpha)

参数说明

fromAlpha:开始时刻的透明度,取值范围0~1。

toAlpha:结束时刻的透明度,取值范围0~1。

【实例演示】下面通过代码来演示如何设置一个简单的渐变透明度动画效果。

  1. public class firstActivity extends Activity {  
  2. /** Called when the activity is first created. */  
  3. @Override  
  4. public void onCreate(Bundle savedInstanceState) {               //重载onCreate方法  
  5.     super.onCreate(savedInstanceState);  
  6.     setContentView(R.layout.main);  
  7.  
  8.     final ImageView image=(ImageView)findViewById(R.id.imageView1); //ImageView对象  
  9.     Button btn1=(Button)findViewById(R.id.button1);             //按钮对象  
  10.     Button btn2=(Button)findViewById(R.id.button2);  
  11.     final Animation alphaAnimation=new AlphaAnimation(0.1f,1.0f);   //设置透明度动画效果  
  12.     btn1.setOnClickListener(new View.OnClickListener() {            //设置监听器  
  13.           
  14.         @Override  
  15.         public void onClick(View v) {  
  16.             // TODO Auto-generated method stub  
  17.             alphaAnimation.setDuration(30000);                  //设置持续时间  
  18.             image.setAnimation(alphaAnimation);             //设置动画  
  19.             alphaAnimation.startNow();                          //启动动画  
  20.         }  
  21.     });  
  22.     btn2.setOnClickListener(new View.OnClickListener() {            //设置监听器  
  23.           
  24.         @Override  
  25.         public void onClick(View v) {  
  26.             // TODO Auto-generated method stub  
  27.             scaleAnimation.cancel();                            //取消动画执行  
  28.         }  
  29.     });  
  30. }  
  31. }  

 

在这段代码中,首先通过AlphaAnimation构造方法创建了一个透明度变化的动画对象。然后,在第一个按钮监听器中设置了动画的持续时间,之后启动该动画。在第二个按钮监听器中取消该动画。读者运行这段代码,将看到图片的透明度由浅入深逐渐变化,如图9.11所示。最后,图片变为完全不透明的时候停止,如图9.12所示。

 
图9.11  透明度渐变动画
 
图9.12  图片原始透明度

转载于:https://www.cnblogs.com/xgjblog/p/4228638.html

你可能感兴趣的文章