2013-03-26 29 views
0

我有一个AnimationDrawable问题。我想要在停止frameAnimation之后显示的背景与开始frameAnimation之前显示的背景相同。不幸的是,它不是,因为frameAnimation停止时,背景图像被frameAnimation设置为最后一个ImageView显示。AnimationDrawable问题

有没有办法解决它?

ImageView view; 

gridview.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
      view=(ImageView)v; 
      frameAnimation = (AnimationDrawable) v.getBackground(); 
      frameAnimation.start(); 
      myDataThread=new Thread(new DataThread()); 
      myDataThread.start(); 

     } 
    }); 

public class DataThread implements Runnable { 

    public void run() { 
    //do smth 
    view.stop(); 
    view.setBackgroundResource(R.drawable.connectbutton); 
    } 
} 
+0

动画结束您可以重置背景资源那该怎么办? – Triode 2013-03-26 14:48:55

+0

我怎么能重置它? – user2071976 2013-03-26 14:51:32

+0

view.setBackgroundResource(someotherresource或null); – Triode 2013-03-26 14:55:05

回答

1
gridview.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
     view=(ImageView)v; 
     view.setBackgroundResource(R.drawable.your_frame_animation_id); 
     AnimationDrawable frameAnimation = (AnimationDrawable) view.getBackground(); 
     frameAnimation.start(); 

     view.post(new Runnable() { 

      @Override 
      public void run() { 

       if(frameAnimation.getCurrent() != frameAnimation.getFrame(frameAnimation.getNumberOfFrames() - 1)) 
       { 
        view.post(this); 
       }else 
       { 
        view.removeCallbacks(this); 
        view.setBackgroundResource(R.id.some_image_resource); 
       } 

      } 
     }); 
    } 
}); 

更改setOnItemClickListener这样的,默认情况下,帧动画将被循环。当您为GridView设置的Adapter调用getView方法时,您也可能需要重置背景。对于动画监听器,你可以做一些事情,比如获取总帧数,并将其乘以单帧的持续时间。或做到这一点

view.post()

+0

它不工作的人,它不会重置 – user2071976 2013-03-26 16:19:18

+0

看到编辑答案 – Triode 2013-03-26 16:32:41

+0

好吧,它实际上解决了这个问题,但是我想要的是当某个事件发生时能够停止动画,而不是仅仅显示一组图像,并在到达最后一个图像时停止它。这个实现似乎无法做到这一点。 – user2071976 2013-03-26 16:45:27