2011-07-15 44 views
0

现在我有四象,我已经在这四个图像应用帧动画如何在一帧一帧动画两个框架之间的延迟

1.one

2.两

3 。三

4.Go

我想举三个之间的时间延迟,并进入帧这将是一个随机时间。

这里是我的代码

int d=5000; 
AnimationDrawable drawable=new AnimationDrawable(); 
    drawable.addFrame(getResources().getDrawable(R.drawable.one), 1000); 
    drawable.addFrame(getResources().getDrawable(R.drawable.two), 1000);   
    drawable.addFrame(getResources().getDrawable(R.drawable.three),d);  
    drawable.addFrame(getResources().getDrawable(R.drawable.go),d); 
    drawable.setOneShot(true); 
    iv3.setBackgroundDrawable(drawable); 
    drawable.start(); 

IV3哪里是我的ImageView

而且我也想给缩放动画与这些图像帧一帧动画。

请帮我...

钍@ NKS

+0

是不是'D',你可以通过在你的ADDFRAME随机值()?或者是不工作? –

+0

没有一个简单的整数值我没有任何问题关于它.....我想给两个帧之间的延迟 –

+0

好吧,但我会使它随机值,但我的问题是如何应用两帧之间的延迟意味着我应该什么都看不到(没有动画的frmae)当三个图像去和之前去图像来 –

回答

0

在搜索并做了很多在线的东西之后,我认为我不能在两个后续帧之间在逐帧动画中给出延迟时间,而且我也无法一起实现缩放和逐帧。因此,我执行了另一种方法是以下

b=AnimationUtils.loadAnimation(this, R.anim.scalealpha); 
a=AnimationUtils.loadAnimation(this, R.anim.scalealpha); 
     c=AnimationUtils.loadAnimation(this, R.anim.scalealpha); 
     e=AnimationUtils.loadAnimation(this, R.anim.scalealpha); 

       a=AnimationUtils.loadAnimation(this,R.anim.scalealpha); 
       iv3.setImageResource(R.drawable.one); 
       iv3.startAnimation(a); 

      Handler handler = new Handler(); 
      handler.postDelayed(new Runnable() 
      { 

       public void run() 
       { 

         iv3.setImageResource(R.drawable.two); 
         iv3.startAnimation(b); 
         Handler handler = new Handler(); 
         handler.postDelayed(new Runnable() 
         { 
          public void run() 
          { 

            iv3.setImageResource(R.drawable.three); 
            iv3.startAnimation(c); 
            Handler handler = new Handler(); 
            handler.postDelayed(new Runnable() 
            { 
             public void run() 
             { 

               iv3.setImageResource(R.drawable.go);                 
               iv3.startAnimation(e); 
             }}, 3000); 

          }}, 1000); 


       }}, 1000); 

如果有人知道更好的方法比这个,请告诉我,我会格莱德知道.......... 感谢的人谁试图解决这个问题.. ...

0

这里是例子:check this

看来,你必须写在XML动画时间,如:

<item android:drawable="@drawable/wheel0" android:duration="50" /> 

希望它有帮助。

编辑::检查this链接了。

+0

没有不动画持续时间我已经在代码中定义了数值的持续时间(我使用编码而不是xml完成​​了此动画)。但我想给两个帧之间的随机延迟... –

+0

你知道如何给这些图像的逐帧动画缩放动画吗? –

1

看到它,它适用于我。

public class MainActivity extends ActionBarActivity { 
ImageView view; 
AnimationDrawable Anim; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    view = (ImageView) findViewById(R.id.ivAnimation); 
    view.setId(1); 
    view.setBackgroundResource(R.drawable.image); 
    view.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      if (view.getId() == 1) { 
       animationStart(); 
       view.setId(2); 
      } else { 
       view.setBackgroundResource(R.drawable.image); 
       view.setId(1); 

      } 
     } 

     private void animationStart() { 
      try { 
       BitmapDrawable frame1 = (BitmapDrawable) getResources() 
         .getDrawable(R.drawable.one); 
       BitmapDrawable frame2 = (BitmapDrawable) getResources() 
         .getDrawable(R.drawable.two); 
       BitmapDrawable frame3 = (BitmapDrawable) getResources() 
         .getDrawable(R.drawable.three); 

       BitmapDrawable frame4 = (BitmapDrawable) getResources() 
         .getDrawable(R.drawable.four); 
       BitmapDrawable frame5 = (BitmapDrawable) getResources() 
         .getDrawable(R.drawable.five); 
       BitmapDrawable frame6 = (BitmapDrawable) getResources() 
         .getDrawable(R.drawable.six); 

       Anim = new AnimationDrawable(); 
       Anim.addFrame(frame1, 200); 
       Anim.addFrame(frame2, 200); 
       Anim.addFrame(frame3, 200); 
       Anim.addFrame(frame4, 200); 
       Anim.addFrame(frame5, 200); 
       Anim.addFrame(frame6, 200); 
       Anim.setOneShot(false); 
       view.setBackgroundDrawable(Anim); 
       final Handler handler = new Handler(); 
       handler.postDelayed(new Runnable() { 

        public void run() { 

         Anim.start(); 

        } 
       }, 100); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

     } 
    }); 
} 

}