안녕하세요^^
아는 수준에서 게임형식의 아주 간단한 어플을 만들어보고 있는 중
좀 당황스러워 고수님들의 도움을 요청합니다...

아래 소스는 대충..
PNG 파일을 프레임 애니메이션으로 액티비티에 실행하고
타이머에 설정한 값 만큼의 시간이 흐른후
executeActivity_01 -> executeActivity_02 - > executeActivity_03
식으로 넘어갑니다.

여기서 문제가 되는건, executeActivity_02 에서 애니메이션이 실행되고,
다시 한번더 반복되어 실행되는겁니다.
그리고 executeActivity_03 애니메이션이 실행되도
한번씩 불안정하게 화면이 흔들거립니다.(아마 이전 액티비티로 가려는 듯한 움직임??)

아래 세가지 소스 내용이 거의 비슷하구요
01이랑 02은 타이머 이후 넘어가고,
03은 터치를 하면 넘어갑니다.

기존의 모바일 게임들 처럼 제작사나 스폰서 같은 로고가 뜨고
TOUCH THE SCREEN 문구가 뜨면 터치를 해서 메뉴가 시작되는 .. 그런 형식을
흉내 내보려고 하는데..

잘 안되네요..

액티비티를 끄려고 finish() 함수를 이 곳 저곳에다 다 갔다 붙이면서
해보는데도 똑같네요.. (쓰나 안쓰나...)

보통 아래 소스 처럼 타이머 시간이 지나면 run()이 딱 한번 실행되고 마는게 아닌가요?
내부에 남아있어서 또 실행이 되는건지.. 참 어렵습니다.

혹시 잘 정리된 예제 소스나 비슷한 것을 만들어보신 고수님들의
도움이 절실히 필요합니다...........!!


------------------------------------executeActivity_01.java-------------------------------
package kkh.project;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.view.MotionEvent;
import android.widget.ImageView;

public class executeActivity_01 extends Activity {
 AnimationDrawable animation;
// Handler m = new Handler();
 
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.exac01);
 
   animation = new AnimationDrawable();
   animation.addFrame(getResources().getDrawable(R.drawable.k1), 200);
   animation.addFrame(getResources().getDrawable(R.drawable.k2), 200);
      animation.addFrame(getResources().getDrawable(R.drawable.k3), 200);
      animation.addFrame(getResources().getDrawable(R.drawable.k4), 200);
      animation.addFrame(getResources().getDrawable(R.drawable.k5), 200);
      animation.addFrame(getResources().getDrawable(R.drawable.k6), 200);
      animation.addFrame(getResources().getDrawable(R.drawable.k7), 200);
      animation.addFrame(getResources().getDrawable(R.drawable.k8), 200);
      animation.addFrame(getResources().getDrawable(R.drawable.k9), 200);
      animation.addFrame(getResources().getDrawable(R.drawable.k10), 200);
      animation.addFrame(getResources().getDrawable(R.drawable.k11), 200);
       animation.setOneShot(true);
     
      ImageView imageAnim =  (ImageView) findViewById(R.id.img01);
      imageAnim.setBackgroundDrawable(animation);
 }
 
 public void onWindowFocusChanged(boolean hasFocus) {
  super.onWindowFocusChanged(hasFocus);
  animation.start();
  TimerTask m = new TimerTask() {
   
   @Override
   public void run() {
    Intent intent = new Intent(executeActivity_01.this,
      executeActivity_02.class);
    startActivity(intent);
    finish();
   }
  };
  Timer t = new Timer();
  t.schedule(m, 3000);

  /*
  m.postDelayed(new Runnable() {
   @Override
   public void run() {
    Intent intent = new Intent(executeActivity_01.this,
      executeActivity_02.class);
    startActivity(intent);
    finish();
   }
  }, 4000);
  */
 }
}
---------------------------------------executeActivity_02.java----------------------------

package kkh.project;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.widget.ImageView;

public class executeActivity_02 extends Activity {
 AnimationDrawable animation;
// Handler m = new Handler();
 
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.exac01);
 
   animation = new AnimationDrawable();
   animation.addFrame(getResources().getDrawable(R.drawable.a1), 250);
   animation.addFrame(getResources().getDrawable(R.drawable.a2), 250);
      animation.addFrame(getResources().getDrawable(R.drawable.a3), 250);
      animation.addFrame(getResources().getDrawable(R.drawable.a4), 250);
      animation.addFrame(getResources().getDrawable(R.drawable.a5), 250);
      animation.addFrame(getResources().getDrawable(R.drawable.a6), 250);
      animation.addFrame(getResources().getDrawable(R.drawable.a7), 250);
      animation.addFrame(getResources().getDrawable(R.drawable.a8), 250);
    
      animation.setOneShot(true);
     
      ImageView imageAnim =  (ImageView) findViewById(R.id.img01);
      imageAnim.setBackgroundDrawable(animation);
 }
 public void onWindowFocusChanged(boolean hasFocus) {
  
  super.onWindowFocusChanged(hasFocus);
  animation.start();
  TimerTask m = new TimerTask() {
   
   @Override
   public void run() {
    Intent intent = new Intent(executeActivity_02.this,
      executeActivity_03.class);
    startActivity(intent);
    finish();
   }
  };
  Timer t = new Timer();
  t.schedule(m, 4000);
  /*
  m.postDelayed(new Runnable() {
   @Override
   public void run() {
    finish();
    Intent intent = new Intent(executeActivity_02.this,
      executeActivity_03.class);
    startActivity(intent);
   }
  }, 2000);
  */
 }
}
--------------------------------------------class executeActivity_03------------------------------------------
package kkh.project;

import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.ImageView;

public class executeActivity_03 extends Activity {
 AnimationDrawable animation;
 
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.exac01);
 
   animation = new AnimationDrawable();
   animation.addFrame(getResources().getDrawable(R.drawable.ts1), 300);
   animation.addFrame(getResources().getDrawable(R.drawable.ts2), 300);
      animation.setOneShot(false);
     
      ImageView imageAnim = (ImageView) findViewById(R.id.img01);
      imageAnim.setBackgroundDrawable(animation);
 }
 public void onWindowFocusChanged(boolean hasFocus) {
  super.onWindowFocusChanged(hasFocus);
  animation.start();
 }
 public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
     Intent intent = new Intent(executeActivity_03.this,
       InitMenu.class);
     startActivity(intent);
     return true;
    }
    return super.onTouchEvent(event);
  }
}
--------------------------------------exac01.xml------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <ImageView
     android:id="@+id/img01"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent" />
</LinearLayout>