android实现蝴蝶动画,android中的动画具体解释系列——飞舞的蝴蝶 -ag凯发k8国际
这一篇来使用逐帧动画和补间动画来实现一个小样例,首先我们来看看android中的补间动画。
android中使用animation代表抽象的动画类,该类包含以下几个子类:
alphaanimation:透明改变动画。
scaleanimation:大小缩放动画。
translateanimation:位移变化动画。
rotateanimation:旋转动画。
我们以下使用位移动画和逐帧动画来实现这个小样例。先看看执行效果:
蝴蝶挥动翅膀的逐帧动画文件:
android:oneshot="false">
界面布局文件:>
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background"
>
android:id="@ id/butterfly"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@anim/butteryfly"
/>
详细逻辑及位移动画:package com.example.butteryfly;
import java.util.timer;
import java.util.timertask;
import android.app.activity;
import android.graphics.drawable.animationdrawable;
import android.os.bundle;
import android.os.handler;
import android.view.display;
import android.view.view;
import android.view.view.onclicklistener;
import android.view.animation.translateanimation;
import android.widget.imageview;
public class mainactivity extends activity {
private float curx = 0;
private float cury = 30;
private float nextx = 0;
private float nexty = 0;
private int windoww = 0;
private int windowh = 0;
private imageview imageview;
handler handler = new handler(){
public void handlemessage(android.os.message msg) {
if(msg.what == 0x123){
if(nextx > windoww || nexty > windowh){
curx = nextx = 0;
}else{
nextx = 8;
}
nexty = cury (float) (math.random() * 20 - 10);
translateanimation anim = new translateanimation(curx, nextx, cury, nexty);
curx = nextx;
cury = nexty;
anim.setduration(200);
imageview.startanimation(anim);
}
};
};
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
imageview = (imageview) findviewbyid(r.id.butterfly);
display display = getwindowmanager().getdefaultdisplay();
windoww = display.getwidth();
windowh = display.getheight();
final animationdrawable butterfly = (animationdrawable) imageview.getbackground();
imageview.setonclicklistener(new onclicklistener() {
@override
public void onclick(view arg0) {
butterfly.start();
new timer().schedule(new timertask() {
@override
public void run() {
handler.sendemptymessage(0x123);
}
}, 0, 200);
}
});
}
}
总结
以上是ag凯发k8国际为你收集整理的android实现蝴蝶动画,android中的动画具体解释系列——飞舞的蝴蝶的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: android碎片化的解决方法,解决 a
- 下一篇: android 拦截点击事件,andro