2012-02-09 5 views
1

私はAndroidの開発でもっと手伝ってください。言い換えれば、3つのイメージとアニメーションを作成したい場合や、いくつかの条件の後に4つのイメージ、5つのイメージなどになるように、イメージのアニメーションを動的に作成したいだけです。 3つのイメージを3つのランナブルと別々に作成しているときはうまく動作しますが、この3つのランナブルをダイナミックアレイで作成するときは何もしません。ここでは3でコードが別にそれが正常に動作しますが、次は私がしてアニメーションを作成する方法を意味し、この問題を解決する方法は何もAndroidでアニメーションを作成する

for(j=0;j<c;j++)  
{ 
    run[j]=new Runnable() 
    { 
     public void run() { 
      if(t[j]) 

      { 

       params[j]=(LayoutParams) images[j].getLayoutParams(); 
       params[j].x=x1[j]; 
       params[j].y=y1[j]; 
       images[j].setLayoutParams(params[j]); 

       x2[j]=r.nextInt(720-80)+80; 
       y2[j]=r.nextInt(400-80)+80; 

       ta[j] = new TranslateAnimation(0, x2[j]-x1[j], 0, y2[j]-y1[j]); 
       ta[j].setDuration(200); 
       ta[j].setFillAfter(true); 
       images[j].startAnimation(ta[j]); 
       x1[j]=x2[j]; 
       y1[j]=y2[j]; 

       handler.postDelayed(run[j], 200); 
      } 
     } 

    }; 
for(j=0;j<c;j++)  
{ 
    this.runOnUiThread(run[j]); 
} 

しないRUN2とRUN3 ため

private Runnable run1= new Runnable() { 
public void run() { 
    if(t1) 
    { 
     LayoutParams params1=(LayoutParams) l1.getLayoutParams(); 
     params1.x=x1; 
     params1.y=y1; 
     l1.setLayoutParams(params1); 
     x2=r.nextInt(720-80)+80; 
     y2=r.nextInt(400-80)+80; 

    TranslateAnimation ta1 = new TranslateAnimation(0, x2-x1, 0, y2-y1); 
    ta1.setDuration(800); 
    ta1.setFillAfter(true); 
    l1.startAnimation(ta1); 
    x1=x2; 
    y1=y2; 

    handler.postDelayed(run1, 800); 

    } 
} 

及びそのランナブル画像の動的な数。

答えて

1

まず、あなたのt [j]が「真」になっているかどうか、または常に偽のままであることを確認する必要があります(本当にt [j]を忘れたと思います)。 第2に、画像のアニメーションを動的に作成するもう1つの良い方法があります。共通クラスの画像を使用する代わりに、それぞれの画像を別々のクラスのオブジェクトとして提示する必要があります。画像の名前と、このオブジェクトがアニメーション化するかどうかを決定する独自のブール値の2つの属性を提供する必要があります。次に、このクラスのオブジェクトの配列と各オブジェクトのアニメーションを実行するアニメーションを動的に作成することができます。私は客観的なC開発者です。ここではAndroid用に簡単に転送できるコードを示します。

class Single implement Runnable 
{ 
UIImageView* image; 
bool t; 
//method run{ 

//here you should create animation code 

} 
class common 
{ 
static int c=3; 
Single[] arrayOfObj=new Single[3]; 
//method onCreate 
{ 
//create objects of arrayOfObj with images that you want and then call run method for each object 
} 
} 
+0

ありがとうございました。その私のために非常に役立つ! – hovo888s

関連する問題