Android Sudoku #2. 게임설명 추가하기:버튼 구현, 새 액티비티와 레이아웃 추가

|

1. 반응하는 버튼 만들기
일단 메뉴화면을 만들었으니 이제 버튼을 눌러서 기능에 맞는 기능을 부여해줄 차례이다.
이 것을 구현하기 위한 절차로,
⊙ 버튼에 클릭 리스너 추가
⊙ Dialog를 출력하는 액티비티 추가
⊙ 밋밋한 화면에 Theme적용해보기
우선 버튼에 클릭할 리스너를 추가하기 전에 사용자에게 보여줄 문구를 strings.xml에 적어주자.
(그래야 R.class에도 추가가 되고 프로그래밍 하는 동안 에러 볼일이 적어지니까..)

../res/values/strings.xml

이제 About버튼을 클릭하면 알아차릴 수록 있도록 About버튼에 리스너를 달아주고 그때 해야 할 일을 정해주는 일을 할 차례이다. 

리스너 달기
../src/Sudoku.java

나중을 위해서 4개의 버튼 모두에다 리스너를 달았지만 버튼이 클릭( onClick())이 되었을때 실행시킬 것은 About만 구현하였다. 그리고 아직 할 일이 더 있다. 소스에 보이는 About.class를 아직 작성안했으니 에러가 나니까 어서 About.class를 준비해줘야겠다.
그전에 짚을 부분은 Sudoku클래스가 레이아웃을 준비하면서 버튼 누르는 것을 "듣고"(Listen)있는 기능을 구현해주는 OnClickListener를 "구현"시키기 위해 implements OnClickListener를 꼭 적어주는 것과 이 인터페이스(OnClickListener)를 구현시키려면 반드시 추가해줘야 하는 public void onClick(View v) 함수를 구현해줘야 한다는 것이다. 만약 버튼에서 클릭하는 동작(이벤트)이 감지되면 이 onClick함수가 실행된다.
onClick에서는 이벤트를 일으킨 객체를 식별하기 위해 ID를 사용하고 있는데 우리는 이를 미리 앞에서 만들어서 ../res/strings.xml에 저장해 두었다. 
어쨌든 지금 해야 할 일은 About.class라는 놈을 만드는 것인데, 방법은 About.java를 만들어 보는 것!!

../src/../About.java

이어서 실제로 화면에 보여질 화면을 구성...

../res/layout/about.xml

자... 이제 대충 정리가 된 듯 하다.
About에 불러올 화면(about.xml)과 글(strings.xml)도 준비 되었고, 버튼에 리스너도 달았고(Sudoku.java) 버튼 클릭시 불러올 액티비티(About.java)도 준비 되었다. 하지만 반드시 알아둬야 할 것은 새로운 엑티비티를 추가하게 되면 AndroidManifest.xml에 그 내용을 기재해줘야 한다. About.java를 작성할때 extends Activity라고 되있는데 이렇게 선언되어있으면 AndroidManifest.xml에 등록시켜줘야 한다는 뜻.

/AndroidManifest.xml

이 내용을 덛붙일 위치는 <application> 블럭 아래에 <activity> 블럭 한쌍이 있는데 그 블럭이 끝나는 부분에 붙여주면 된다. 
그럼 아래와 같은 화면을 볼 수가 있다.

음... 좀 보기가 그렇다...


일단은 기쁘게도 버튼이 잘 동작하긴 하지만 출력되는 모양이 별로 마음에 들지 않는데, 이것을 테마(Theme)를 적용해서 바꿔볼까 한다. 상당히 쉽게 구현할 수가 있는데 여러가지 방법이 있겠지만 이번엔 Manifest파일을 직접 수정해서 바꿔보았다.(사실 특별할 것도 없지만... 흑)
/AndroidManifest.xml
결과화면은 다음과 같이 기대할 수 있다.

그리 화려하진 않지만 아까보다는 봐줄만 하다. 뒤로가기 버튼을 누르면 메뉴로 돌아갈 수 있다.


여기까지가 About버튼에 액션을 주고, 다른 액티비티 클래스를 호출하고, 액티비티 작성 후 mainfest파일에 액티비티를 등록뿐만 아니라 테마도 바꿔주는 것 까지 해봤다. 

사실 안드로이드에서 Intent클래스를 이용해서 다른 액티비티를 불러오는 과정은 자주 만나게 될 부분이므로 다른 예제들도 해보면서 익숙하게 해둘 필요가 있다. 물론 Manifest파일에 등록해두는 것을 잊어선 안된다.

다음 글에서는 New Game에 난이도 조절UI 연결, Exit 버튼 그리고 옵션메뉴(배경음과 힌트 옵션) 구현.

Trackback 0 And Comment 0
prev | 1 | 2 | 3 | 4 | 5 | 6 | 7 | next