마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

애니메이션이 종료되면 다이얼로그를 띄워주려고 합니다..

0 추천
package com.example.come_back_home;

import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.widget.Chronometer;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;



public class GameActivity1 extends Activity {
	static int screenWidth;
	static int screenHeight;
	FailedDialog1 fdlg1;
	Context context;
	GameActivity1 gameActivity1;
	ImageView imageSafe, wolf, gauge;
	BitmapDrawable frameSafe;
	BitmapDrawable frameDanger;
	BitmapDrawable frameOver;
	AnimationDrawable mAnimation;
	Animation animation;
	Animation animating;
	int duration = 4000;
	Chronometer chrono;
	long timeStart, timeEnd, time;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		DisplayMetrics metrics = new DisplayMetrics();
		this.getWindowManager().getDefaultDisplay().getMetrics(metrics);
		screenWidth = metrics.widthPixels;
		screenHeight = metrics.heightPixels;
		gameActivity1 = this;
		setContentView(new MyView1(this, gameActivity1));

		animate();
		
	}

	public void animate() {
		LayoutInflater inflater = getLayoutInflater();
		View layout = (View) inflater.inflate(R.layout.animation, null);
		addContentView(layout, new LinearLayout.LayoutParams(screenWidth, screenHeight) );

		timeStart = System.currentTimeMillis();
		chrono = (Chronometer) findViewById(R.id.chronometer1);
		chrono.setBase(SystemClock.elapsedRealtime());
		chrono.setFormat("%s");
		chrono.start();

		imageSafe = (ImageView) findViewById(R.id.imageSafe);
		frameSafe = (BitmapDrawable)getResources().getDrawable(R.drawable.safe);
		frameDanger = (BitmapDrawable)getResources().getDrawable(R.drawable.danger);
		frameOver = (BitmapDrawable)getResources().getDrawable(R.drawable.over);

		mAnimation = new AnimationDrawable();

		//AnimationDrawable에 BitmapDrawable을 추가한다. (고양이 표정변경)
		mAnimation.addFrame(frameSafe, duration);
		mAnimation.addFrame(frameDanger, duration);
		mAnimation.addFrame(frameOver, duration+100000);

		//ImageView에 설정해준다
		imageSafe.setImageDrawable(mAnimation);

		//반복되기 위하여 false를 해준다
		mAnimation.setOneShot(false);

		//start() 메서드로 애니메이션을 시작한다
		mAnimation.start();

		wolf = (ImageView)findViewById(R.id.imageWolf);
		gauge = (ImageView)findViewById(R.id.imageGuage);
		animation = AnimationUtils.loadAnimation(this, R.anim.ani);
		animating = AnimationUtils.loadAnimation(this, R.anim.gauge);

		//      image.startAnimation(animation);

		animation.setFillAfter(true);
		animating.setFillAfter(true);
		wolf.startAnimation(animation);
		gauge.startAnimation(animating);

		setAnimation(animation);


	}

	public void setAnimation(Animation animation){ 

		//		animation.setFillAfter(true);  // animation를 setFillAfter를 이용하여 animation후에 그대로 있도록 합니다.

		animation.setAnimationListener(new AnimationListener() {
			@Override
			public void onAnimationEnd(Animation animation) {
				//				((Animatable) animation).stop();
				Log.d("TAG", "onAnimationEnd called");
				chrono.stop();
				timeEnd = System.currentTimeMillis();
				time = ((timeEnd-timeStart)/1000)-1;
				Log.d("TAG", "onAnimationEnd called");
			}
			@Override
			public void onAnimationRepeat(Animation animation) {
			}
			@Override
			public void onAnimationStart(Animation animation) {
			}
		});

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item)  {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
}
package com.example.come_back_home;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;

public class FailedDialog1 extends Dialog {
	Button btnMain, btnRestart, btnEnd;
	Handler handler;
	Context context;
	
	public FailedDialog1(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
		this.context = context;
	}

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.faileddialog);
		handler = new Handler();
		btnMain = (Button)findViewById(R.id.BtnMain);
		btnRestart = (Button)findViewById(R.id.BtnNext);
		btnEnd = (Button)findViewById(R.id.BtnEnd);

		btnMain.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				handler.post(new Runnable() {
					@Override
					public void run() {
						// TODO Auto-generated method stub
						Intent intent = new Intent(context.getApplicationContext(), MainActivity.class);
						context.startActivity(intent);
						((Activity) context).finish();
					}
				});
			}
		});

		btnRestart.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				handler.post(new Runnable() {
					@Override
					public void run() {
						// TODO Auto-generated method stub
						Intent intent = new Intent(context.getApplicationContext(), GameActivity1.class);
						context.startActivity(intent);
						((Activity) context).finish();
					}
				});
			}
		});

		btnEnd.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				moveTaskToBack(true); 

			}
			private void moveTaskToBack(boolean b) {
				// TODO Auto-generated method stub
				if(b == true)
					((Activity) context).finish();
			}

		});

	}
}

각각 activity와 다이얼로그 입니다..

애니메이션이 종료되면 다이얼로그를 호출하려고 하는데.. 어떤 문제인지.. 앱 실행중 오류가 생깁니다..

고수님들의 도움이 필요합니다..

카카메카 (240 포인트) 님이 2015년 11월 23일 질문
에러 로그가 필요합니다..

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...