본문 바로가기
프로그래밍/안드로이드

안드로이드 뷰(View) 2

by -현's- 2012. 6. 22.
반응형

 

 

●캐릭터 이미지 불러오기

- 캐릭터로 사용할 이미지는 배경을 투명하게 처리두어야 한다. 먼저 캐릭터 이미지를 res폴더 안에 임의의 폴더 drawable에 저장한다. 이때 리소스로 사용할 파일 이름은 영어 소문자로 써야하고 숫자, 언더바등을 사용하여 작성한다.

 

- 이미지를 저장한 후 소스 코드에서 " Bitmap bitmap = BitmapFactory.decodeResource(리소스, 리소스 id); " 를 이용해서 비트맵을 읽어온다.

 

- 리소스는 " Resources res;  res=context.getResources();  "를 사용하여 구한다.

 

- context가 매개변수로 넘오온 경우에는 다음과 같이 간단히 작성할 수 있다.

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.그림파일이름);

 

-canvas.drawBitmap()로 이미지를 출력한다.

canvas.drawBitmap(Bitmap bitmap, x좌표, y좌표, Paint paint);

 

 

 

●캐릭터의 기준 위치 설정

- Canvas에 이미지를 표시할 때는 기준점은 이미지의 좌측 상단이다. 출력할 이미지가 배경이면 상관없지만 움직이는 캐릭터의 경우 기준점을 좌측 상단으로 설정하면 충돌등의 이벤트를 판단하는데 번거롭기 때문에 기준을 캐릭터 정 가운데로 설정한다.

 

- 단말기 화면 좌측 상단을 좌표(0,0)으로 보고 캐릭터의 중심은 다음과 같이 구한다.

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.car);

 

int cw=bitmap.getWidth()/2;        //car이미지의 너비 절반

int ch=bitmap.getHeight()/2;      //car이미지의 높이 절반

 

canvas.drawBitmap(bitmap, x-cw, y-ch, null);

 

 

 

 

●화면에 캐릭터 이미지 출력하기 예제

 

 

 

 

 

 

●캐릭터 움직이기

- 캐릭터의 움직임은 캐릭터의 좌표를 설정해두고 이 좌표값을 변경시키고 변경된 좌표에 다시 캐릭터를 출력시킨다. 이 작업을 짧은 시간에 반복으로 실행해서 우리 눈에는  움직이는 것 처럼 보인다.

 

- 이 예제에서는 캐릭터를 onDraw()함수에서 그리고 있으므고 Timer나 Handler 등을 사용하여 일정한 간격으로 onDraw함수를 반복적으로 호출하여 계속해서 캐릭터가 출력되도록 한다.

 

- Handler는 주로 특정한 부분을 일정한 간격으로 반복해서 실행할때 사용한다.

 

-

Handler mHandler=new Handler(){

public void handleMessage(Message msg){

반복해서 처리할 부분;

mHandler.sendEmptyMessageDelayed(메시지 번호, 지연시간);

}

};

 

- 위와 같이 작성된 핸들러는 "mHandler.sendEmptyMessageDelayed(번호,시간); " 으로 호출한다. Handler는 한번만 호출해 두면 Handler가 알아서 반복할 부분을 지정한 간격으로 지속적으로 처리한다.

 

 

 

 

●캐릭터 움직이기 예제 

 

 

 

●Touch Event 이용하기

- 다음 코드에서 터치를 받아서 처리한다.

@override

public boolean onTouchEvent(MotionEvent event){

if(event.getAction()==MotionEvent.ACTION_DOWN){

처리할부분;

}

return true;

}

 

- 다음은 자주 사용하는 동작이다.

ACTION_DOWN  -  화면에 손이 닿았을때 발생

ACTION_UP  -  화면에서 손을 뗐을때 발생

ACTION_MOVE  -  화면을 누른상태에서 손을 이동하면 발생

 

 

 

 

●터치한 좌표로 캐릭터 이동시키기 예제

- 위의 예제에서 다음코드를 추가하면 된다.

 

 

 

 

반응형

댓글