System.out.println("Hello, World");



화면에 짜장, 짬뽕, 기타 메뉴를 만들어준다. 

짜장과 짬뽕을 선택하면 토스트 메시지로 저장해둔 메시지가 출력되고, 기타를 선택하면 다른 팝업창이 출력되어 우동과 만두를 선택하라고 한다. 

그 항목중 한개를 선택하면 메시지가 토스트된다.






메뉴를 XML로 만들어서도 사용할 수 있다.

XML로 메뉴를 만들면 개발과정도 편리할 뿐만 아니라 국제화에도 유리하므로 이후 메뉴를 디자인할때는

가급적이면 XML로 정의하는 것이 유리하다.






Posted by 김마농

타이머 처리를 위해 Handler 클래스를 사용한다. 핸들러는 스레드간의 메시지 통신을 위한 장치로서 sendMessage 메서드나 유사 메서드로 특정 핸들러에게 메시지를 보낼수 있다. 핸들러는 스레드의 경계를 넘어설수 있는 범용적인 통신 장치이며 제대로 사용할려면 꽤 많은 것을 알아야 하지만 한 스레드내에서 간단하게 타이머로도 쓸수 있다.


mHandler가 핸들러이며 handleMessage에서 value값을 1 증가 시켜 텍스트뷰로 호출한다. sendEmptyMessageDelayed 메서드로 1초간의 지연시간을 두어 1초후에 호출되도록 한다.



다음은 핸들러가 하는 일이 복잡하지 않고 코드가 단순하다면 굳이 외부에 둘 필요 없이 onCreate 메서드 안에서 지역적으로 초기화 시키는 것도 가능하다. 이벤트 리스너를 onCreate에서 생성 및 초기화하는 것과 마찬가지이다.



핸들러 초기화문이 onCreate에 작성되어 있으며 최초 빈 메시지를 보내는 문장과 나란히 둘수 있어 좀더 간단해보인다. 

핸들러가 자신을 재귀호출하면 무한히 반복되지만 일정 조건이 만족되면 재호출을 중지 할 수도 있다.


핸들러로도 타이머 흉내를 낼 수 있지만 익숙해지면 오히여 융통성이 있다. 중간에 타이머를 멈추거나 주기를 바꾸는 것도 가능하지만 스레드 간의 통신을 위해 제공되는 클래스라 원래의 용도와는 조금 맞지 않는 면이 있기 때문에 CountDownTimer 클래스를 활용하는 것이다.




위의 소스는 객체를 생성하자마자 시작하며 10초동안 1초 간격으로 나누어 작업한다. 

value가 5가 되면 cancel이 되도록 명령을 했지만 무슨 이유인지 작동안하고 10초까지 카운트한다. 




Posted by 김마농

버튼은 클릭이외에도 롱클릭이라는 이벤트를 받는다. 롱클릭은 버튼을 일정한 시간동안 계속 누르고 있는 동작이며 터치를 떼지 않고 계속 누르고 있으면 롱클릭 이벤트가 발생한다. 

다음은 버튼과 롱클릭 버튼을 2개 모두 활용한 모습이다. 

XML에서 각각 버튼에 mOnClick이라는 OnClick을 주었고, 이 버튼을 찾아서 setonLongListener를 해준다.



Posted by 김마농