2012-02-15 3 views
1

내 활동에서 나는 애니메이션을 재생 중입니다. 처음으로 활동을 시작하면 모든 애니메이션이 주어진 기간 동안 재생됩니다. 하지만 더 많은 시간 동안 각각의 애니메이션을 반복 할 때 속도가 향상됩니다. 이것은 내 활동입니다 .... 그리고 내 코드에서 코드를 줄이기 위해 모든 객체와 변수 선언을 제공하지 않았습니다 ...애니메이션을 처음 실행 한 후 속도가 빨라지는 이유는 무엇입니까?

public class Exercise extends Activity { /** 활동이 처음 생성 될 때 호출됩니다. */

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.exercise); 

    exercise_Layout=(RelativeLayout)findViewById(R.id.exerciselayout); 

    exercise_Layout.setBackgroundResource(R.drawable.exercise_bg); 

    if(getIntent().getStringExtra("TIPS").equals("Fun")) 
    { 
    count=0; 
    System.out.println("This is Fun"); 
    } 
    else if(getIntent().getStringExtra("TIPS").equals("Tips")) 
    { 
    count=1; 

    } 
gym.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
          exercise_Layout.setBackgroundResource(R.drawable.exercise_bg); 
      gym_View.setBackgroundResource(R.anim.gymanim); 
      gym_Animation=(AnimationDrawable)gym_View.getBackground(); 
      gym_Animation.start(); 
      //playing sounds 
      mp.reset(); 
      mp=MediaPlayer.create(getApplicationContext(),R.raw.gym); 
      try { 
       mp.prepare(); 
      } catch (IllegalStateException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      mp.start(); 
      mp.setLooping(true);  

     } 
    }); 

    run.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
          exercise_Layout.setBackgroundResource(R.drawable.exercise_bg); 
      run_View.setBackgroundResource(R.anim.runanim); 
      run_Animation=(AnimationDrawable)run_View.getBackground(); 
      run_Animation.start(); 
      //playing sounds 
      mp.reset(); 
      mp=MediaPlayer.create(getApplicationContext(),R.raw.thread_music); 
      try { 
       mp.prepare(); 
      } catch (IllegalStateException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      mp.start(); 
      mp.setLooping(true);  

     } 
    }); 

    jogg.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      jogg_View.setBackgroundResource(R.anim.jogroadanim); 
      jogg_Animation=(AnimationDrawable)jogg_View.getBackground(); 
      jogg_Animation.start(); 
      //playing sounds 
      mp.reset(); 
      mp=MediaPlayer.create(getApplicationContext(),R.raw.jogging); 
      try { 
       mp.prepare(); 
      } catch (IllegalStateException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      mp.start(); 
      mp.setLooping(true);  

     } 
    }); 

    swim.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      exercise_Layout.setBackgroundResource(R.drawable.swimingpool); 
      swim_View.setVisibility(View.VISIBLE); 

      swim_View.setBackgroundResource(R.anim.swimanim); 
      swim_Animation=(AnimationDrawable)swim_View.getBackground(); 
      swim_Animation.start(); 
      //playing sounds 
      mp.reset(); 
      mp=MediaPlayer.create(getApplicationContext(),R.raw.swimming); 
      try { 
       mp.prepare(); 
      } catch (IllegalStateException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      mp.start(); 
      mp.setLooping(true);  

     } 
    }); 
} 

답변

0

미안 확실하지,하지만 당신은 CountDownTimers을 사용하고 그 위에 여러 번 누르면, 당신은 두 번 이상을 시작합니다. 어쩌면 애니메이션과 동일한 문제 일 수 있습니다. 예를 들어 swim_Animation.start();이 표시됩니다. 다시 활성화하기 전에 swim_Animation.stop();을 시도하십시오. 나는 너에게 설명을 오해하지 않았 으면 좋겠다 ..

관련 문제