package com.example.dodgegame;
import com.example.dodgegame.Gameplayer.MyView;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.ActionBarActivity;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnKeyListener;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class Gamecanvas extends ActionBarActivity {
private int minute = 0;
private int second = 0;
private TextView text;
private TextView mCountDown;
private TextView t;
private int count = 0;
private Handler handler = new Handler();//초기화
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.gamecanvas);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
handler.removeCallbacks(doUpdateTimer);
handler.postDelayed(doUpdateTimer, 1000);
mCountDown = (TextView)findViewById(R.id.textview02);
mCountDown.setText(String.valueOf(count));
autoCountHandler.postDelayed(autoCountRunnable, 1000);
}
private Runnable doUpdateTimer = new Runnable() {
public void run() {
second ++;
if(second >=60)
{
second = 0;
minute++;
if(minute >=60)
{
minute = 0;
}
}
text = (TextView) findViewById(R.id.textview04);
String strFormat = String.format("%02d:%02d", minute,second);
text.setText(strFormat);
handler.postDelayed(doUpdateTimer, 1000);
}
};
private Handler autoCountHandler = new Handler();
private Runnable autoCountRunnable = new Runnable() {
public void run() {
count++;
mCountDown.setText(String.valueOf(count));
if(count>0)
{
autoCountHandler.postDelayed(autoCountRunnable, 500);
}
else
{
if(autoCountHandler != null){
autoCountHandler.removeCallbacks(autoCountRunnable);
}
}
}
};
}
지금 이 코드까지 한걸 실행시키면 핸드폰이 가로방향으로 돌아가면서 실행되고 좌측상단과 우측상단에
각각 타이머가 동작하게 됩니다. 제가 궁금한건 화면 중앙에 제가 키보드로 w,a,s,d를 누르면 상 하 좌 우 로
움직이는 사각형을 넣고싶습니다.
package com.example.dodgegame;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
public class Gameplayer extends Activity{
int x=100, y = 100;
protected class MyView extends View {
public MyView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint =new Paint();
canvas.drawRect(x,y,x+50,y+50,paint);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyView w = new MyView(this);
w.setFocusable(true);
w.setFocusableInTouchMode(true);
setContentView(w);
w.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(event.getAction()==KeyEvent.ACTION_UP) {
switch (keyCode) {
case KeyEvent.KEYCODE_J:
x -= 30;
break;
case KeyEvent.KEYCODE_K:
x += 30;
break;
}
v.invalidate();
return true;
}
return false;
}
});
}
}
그래서 이 코드를 위쪽에 배치를 해보니까 어플이 실행이 안되고 꺼져버립니다. 뭐가 문제인지 고수님들
답변 부탁드립니다.