欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android开发之图形图像与动画(四)AnimationListener简介

程序员文章站 2023-12-12 19:47:46
就像button控件有监听器一样,动画效果也有监听器,只需要实现animationlistener就可以实现对动画效果的监听,其中需要重载三个函数,就是下面的这几个函数:...
就像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,实现的截图如下:
Android开发之图形图像与动画(四)AnimationListener简介 
具体的实现代码如下:
复制代码 代码如下:

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>

上一篇:

下一篇: