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와 다이얼로그 입니다..
애니메이션이 종료되면 다이얼로그를 호출하려고 하는데.. 어떤 문제인지.. 앱 실행중 오류가 생깁니다..
고수님들의 도움이 필요합니다..