2012-03-19 22 views
1

アニメーションを実装するアプリケーションを作成しています。特定の変数がtrueのとき、アクティビティを開始して変数がtrueの場合、アニメーションは機能しますが、変数を変更するとアニメーションが機能しない真の変数に戻します。理由は誰にも分かりますか?アニメーションDrawable + Android +アニメーションの開始と停止

は変数を宣言

// Load the ImageView that will host the animation and 
     // set its background to our AnimationDrawable XML resource. 
     chargeStatus = (ImageView)findViewById(R.id.chargeStatus); 
     chargeStatus.setBackgroundResource(R.drawable.chargeon); 

     // Get the background, which has been compiled to an AnimationDrawable object. 
     chargeAnimation = (AnimationDrawable) chargeStatus.getBackground(); 

はアプリ上のスレッドが値に設定します

/////When Application Starts 
@Override 
public void onStart() 
{ 
    super.onStart(); 

    Thread cThread = new Thread(new serverThread()); //Starts the thread that initiates  communications 
    cThread.start(); 

スレッドを起動開始

public class serverThread implements Runnable 
{ 
    //public boolean connected = false; //connection 
    public void run() //runs the thread 
    { 

     try 
     { 
      functions.connectToServer(serverIp); //connects to server 
      connected = true; 

      while (connected) 
      { 
       try 
       { 
        connectStatus.setImageResource(R.drawable.blue_car); 
        functions.getStreams(); //establish stream connections 
        functions. updateStatus(); //updates the status of the server 
        changeButtonImage(); //sets initial state for charge button 



        try 
        { 
         Thread.sleep(2500); 
        } 
          catch (InterruptedException interruptedException) 
          { 
          functions.displayMessage("\nThread exception"); 
          } // end catch 

       } 
        catch (IOException e) 
        { 
         Log.e("Client","Trouble Getting Streams",e); 


        } 



      }//end while 
     }//end try 
      catch (Exception e) 
      { 
       Log.e("Client", "Error Connecting", e); 
       connected = false; 
       connectStatus.setImageResource(R.drawable.red_car); 

      } 
    }; //end run 
}; //end serverThread  

変更]ボタン機能

public void changeButtonImage(){ 
    runOnUiThread(new Runnable(){ 


     public void run() { 


      if (functions.chargeStatNumber != 0) 
      { 
       // Start the charge animation 
       chargeAnimation.start(); 
       //set the Charge on off button to stop 
       chargeOnOff.setImageResource(R.drawable.charge_off); 

      } 
      else 
      { 
       // stop the charge animation if running 
       chargeAnimation.stop(); 
       //set charge on off button to on 
       chargeOnOff.setImageResource(R.drawable.charge_on); 
       //set the charging symbol to off 
       chargeStatus.setImageResource(R.drawable.not_charging); 
      } 
     }}); 
} 

ご協力いただきありがとうございます。

答えて

0

以下のコードはあなたに役立ちます。画像の名前をincrementaly(image1、image2、image3 ...)に付けます。

public class DemoAnimation extends Activity { 
    private boolean reverseOrder = false; 
    private int imageIndex = 0; 
    AnimationThread animThread; 
    ImageView imgdone; 
    public void onCreate(Bundle instance) { 
     super.onCreate(instance); 
     setContentView(R.layout.main); 
     imgdone=(ImageView)findViewById(R.id.image); 
     if (animThread == null) { 
      animThread = new AnimationThread(); 
      animThread.start(); 
    } 
    } 
    Handler handler = new Handler() { 
     public void handleMessage(Message message) { 
      try { 
       imgdone.setBackgroundResource(R.drawable.image 
         + message.arg1); 

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

    private class AnimationThread extends Thread { 
     boolean _startAnimation = true; 

     public void run() { 

      while (_startAnimation) { 

       Message message = new Message(); 
       if (!reverseOrder) { 

        if (imageIndex >= 5) 
         reverseOrder = true; 

        message.arg1 = imageIndex; 
        if (imageIndex < 5) 
         imageIndex++; 
        else if (imageIndex == 5) 
         imageIndex--; 

       } else { 

        if (imageIndex <= 0) 
         reverseOrder = false; 
        message.arg1 = imageIndex; 
        if (imageIndex > 0) 
         imageIndex--; 
        else if (imageIndex == 0) 
         imageIndex++; 

       } 
       handler.sendMessage(message); 

       try { 
        Thread.sleep(100); 
       } catch (Exception e) { 
        // TODO: handle exception 
       } 
      } 
     } 
    } 

} 

//それはばかな質問だったごめんスレッド削除

if (animThread != null) 
    animThread._startAnimation = false; 
+0

を停止します。 –

+0

私はそれを見つけようとしていましたが、イメージ番号を変更できる場所はどうでしたか?名前の最初の部分は空白のままにしておきましたか?イメージファイル。 Android Messageメソッドをインポートしたにもかかわらず、pitureが存在しないというエラーメッセージが表示され、.arg1でエラーが表示されます。 –

+0

あなたのメールアドレスを教えてください。 – Hitendra

関連する問題