就像Button控件有监听器一样,动画效果也有监听器,只需要实现AnimationListener就可以实现对动画效果的监听,其中需要重载三个函数,就是下面的这几个函数:
复制代码 代码如下:
private class MyListenr implements AnimationListener{
@Override
public void onAnimationEnd(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub
}
}
其中第一个函数的意思是在动画执行完之后需要开发者做什么,第二个函数的意思是在动画重复执行的过程中应该做什么,第三个函数的意思是当动画开始执行时有什么动作发生。
下面我实现了一个例子,点击删除按钮,图片慢慢淡去,并最终删除,当点击添加按钮时向viewGroup中添加一个imageview,实现的截图如下:
具体的实现代码如下:
复制代码 代码如下:
public class MainActivity extends Activity {
private Button button;
private Button button2;
private ImageView imageView;
private ViewGroup viewGroup;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)findViewById(R.id.button_add);
button2=(Button)findViewById(R.id.button_delete);
imageView=(ImageView)findViewById(R.id.imageView1);
viewGroup=(ViewGroup)findViewById(R.id.viewGroup);
button.setOnClickListener(new Mybutton());
button2.setOnClickListener(new Mybutton());
}
private class Mybutton implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button_add:
Add();
break;
case R.id.button_delete:
Delete();
break;
default:
break;
}
}
}
public void Add() {
AlphaAnimation alphaAnimation=new AlphaAnimation(0.0f, 1.0f);
alphaAnimation.setDuration(2000);
alphaAnimation.setStartOffset(500);
ImageView imageViewAdd=new ImageView(MainActivity.this);
imageViewAdd.setImageResource(R.drawable.ic_launcher);
viewGroup.addView(imageViewAdd);
// viewGroup.addView(imageViewAdd, new LayoutParams(
// LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
imageViewAdd.startAnimation(alphaAnimation);
}
public void Delete() {
AlphaAnimation alphaAnimation=new AlphaAnimation(1.0f, 0.0f);
alphaAnimation.setDuration(2000);
alphaAnimation.setStartOffset(500);
imageView.startAnimation(alphaAnimation);
alphaAnimation.setAnimationListener(new MyListenr());
}
private class MyListenr implements AnimationListener{
@Override
public void onAnimationEnd(Animation arg0) {
// TODO Auto-generated method stub
viewGroup.removeView(imageView);
Log.d("BruceZhang", "Animation End!");
}
@Override
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub
Log.d("BruceZhang", "Animation Repeat!");
}
@Override
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub
Log.d("BruceZhang", "Animation Start!");
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
此实例的布局文件如下,注意,需要在根标签下给出viewGroup的id:
复制代码 代码如下:
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:id="@+id/viewGroup"
>
<Button
android:id="@+id/button_add"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_x="0dp"
android:layout_y="367dp"
android:text="添加图片" />
<Button
android:id="@+id/button_delete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_x="0dp"
android:layout_y="410dp"
android:text="删除图片" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="153dp"
android:layout_y="155dp"
android:src="@drawable/ic_launcher" />
</AbsoluteLayout>
相关推荐:
apache2.2 支持.net 3.5的设置方法
解决表单中第一个非隐藏的元素获得焦点的一个方案
CSS Filter背景透明提示
比较全面的event对像在IE与FF中的区别 推荐
PHP5 操作MySQL数据库基础代码
ORACLE 常用函数总结(80个)第1/2页
JavaScript 浮点数运算 精度问题
SQL语法 分隔符理解小结
Oracle 添加用户并赋权,修改密码,解锁,删除用户的方法
Javascript 刷新全集常用代码
数据类型和Json格式分析小结
VBS 脚本不能运行 提示Windows无法访问指定设备路径或文件
PHP 读取和修改大文件的某行内容的代码
一个JS小玩意 几个属性相加不能超过一个特定值.
Win2003 系统服务器防火墙
asp.net checkbox 动态绑定id GridView删除提示
asp.net cookie的读写实例
PHP 简单日历实现代码
php 攻击方法之谈php+mysql注射语句构造
中文域名备受关注 互联网40年最大变革
SQLSERVER中union,cube,rollup,cumpute运算符使用说明
Oracle 子程序参数模式,IN,OUT,NOCOPY
javascript Range对象跨浏览器常用操作第1/2页
Iframe 自适应高度并实时监控高度变化的js代码
jQuery 使用手册(三)
JavaScript 平滑文字闪烁
php 魔术方法使用说明
Linux 配置WWW服务器全攻略
判断一个表的数据不在另一个表中最优秀方法
配置 SQLServer2005 以允许远程连接
ORACLE实例的后台进程
javascript 读取XML数据,在页面中展现、编辑、保存的实现
Oracle 语句优化分析说明第1/2页
PHP 判断变量类型实现代码
解决Nginx + PHP(FastCGI)遇到的502 Bad Gateway错误
利用JavaScript更改input中radio和checkbox样式
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
学习ExtJS Panel常用方法
jQuery 使用手册(五)
颈椎残废记 站长兄弟请注意保护好自己的身体
jquery 框架使用教程 AJAX篇
巧用DOS 伪装保护文件完整版
JS解析XML的实现代码
Flex Data Binding详解
MySQL 数据类型 详解
jQuery slider Content(左右控制移动)
flex 简单例子(含实例效果图 源码)
C# DoubleClick与MouseDoubleClick区别,双击事件引发顺序
JavaScript 语法集锦 脚本之家基础推荐
php面向对象全攻略 (十) final static const关键字的使用