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

Android编程实现动画自动播放功能

程序员文章站 2022-08-08 09:14:01
本文实例讲述了android编程实现动画自动播放功能。分享给大家供大家参考,具体如下: private imageview image; private ani...

本文实例讲述了android编程实现动画自动播放功能。分享给大家供大家参考,具体如下:

private imageview image;
private animationdrawable animdrawable = new animationdrawable();
@override
public void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.table_title);
    image = (imageview) this.findviewbyid(r.id.scrollview);
    //代码实现
//   for(int i=0; i<16; i++){
//     int id = getresources().getidentifier("load_"+(i+1), "drawable", getpackagename());
//     animdrawable.addframe(getresources().getdrawable(id), 50);
//   }
//   animdrawable.setoneshot(false);
//   image.setbackgrounddrawable(animdrawable);
    animdrawable = (animationdrawable) image.getbackground();
}
@override
public void onwindowfocuschanged(boolean hasfocus) {
    super.onwindowfocuschanged(hasfocus);
    animdrawable.start();
}

在oncreate中执行 animdrawale.start() 动画并不执行。 搞不懂啊
另外以上代码测试过有缺陷。 例如在tabactivity中 onwindowfocuschanged只会执行一次

所以

animationdrawable ad;
@override
public void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.main);
    imageview iv = (imageview) findviewbyid(r.id.animation_view);
    iv.setbackgroundresource(r.drawable.animation);
    ad = (animationdrawable) iv.getbackground();
   //关键代码
   iv.getviewtreeobserver().addonpredrawlistener(opdl);
}
onpredrawlistener opdl=new onpredrawlistener(){
    @override
    public boolean onpredraw() {
        if(ad.isrunning() == false){
        ad.start();
        }
        return true; //注意必须返回true
    }
};

此方法试过 确实可行。 很好。

更多关于android相关内容感兴趣的读者可查看本站专题:《android开发动画技巧汇总》、《android开发入门与进阶教程》、《android视图view技巧总结》、《android编程之activity操作技巧总结》、《android文件操作技巧汇总》、《android资源操作技巧汇总》及《android控件用法总结

希望本文所述对大家android程序设计有所帮助。