Android

[안드로이드] 안드로이드스튜디오(Android Studio), 메뉴(Menu), 옵션메뉴(Option Menu) 추가하기, 컨텍스트메뉴(Context Menu) 추가하기, 안드로이드 예제, 안드로이드 강좌

정보처리마법사 2016. 8. 14. 18:01
반응형

[안드로이드] 안드로이드스튜디오(Android Studio), 메뉴(Menu), 옵션메뉴(Option Menu) 추가하기, 컨텍스트메뉴(Context Menu) 추가하기, 안드로이드 예제, 안드로이드 강좌

 

참고 : 이미지서명은 제 와이프 블로그 이미지서명입니다. 

 

 

 

 

안녕하세요 정보처리마법사 입니다.

 

이번 포스팅의 주제는 메뉴(Menu)에 관한 내용입니다.

안드로이드에서 사용할 수 있는 메뉴에는 두 가지가 있습니다. Mene 버튼을 클릭했을 때 디바이스 하단 부분에 나오는 옵션 메뉴(Option Menu)와, 특정 뷰(View)를 오래 클릭했을 때 팝업(Pop up) 형태로 뜨는 컨텍스트 메뉴(Context Menu)가 있습니다.

먼저 옵션메뉴를 추가하는 방법부터 살펴보겠습니다. 안드로이드 4.0에서는 메뉴를 리스트 형식으로 보여줍니다. 스마트폰에서는 메뉴(Menu) 버튼을 선택해야 보이고, 태블릿에서는 액션바의 오른쪽에 있는 더보기 메뉴를 선택해야 보입니다.

옵션 메뉴와 관련된 메소드에는 세 개가 있습니다.

 

android.app.Activivy 클래스의 옵션메뉴 관련 메소드

boolean onCreateOptionsMenu(Menu menu)

: 액티비티의 옵션 메뉴를 생성합니다.

boolean onPrepareOptionsMenu(Menu menu)

: 옵션 메뉴를 화면에 보여주기 전에 준비 작업을 수행합니다.

boolean onOptionsItemSelected(MenuItem item)

: 메뉴 아이템이 선택될 때마다 호출됩니다.

 

메인액티비티 소스코드입니다.

 

 

menu.add(Menu.NONE, MENU1, Menu.NENE, "메뉴1");

"메뉴1"이라는 문자열을 가진 메뉴를 추가하는 코드입니다. 이때 추가하는 메뉴의 아이디는 유일해야 하므로 MENU1처럼 상수로 아이디를 정의했습니다. MENU1은 Menu.FIRST + 1 로 정의했으며, Menu.FIRST는 1이라는 숫자 값을 가진 상수이므로 결과적으로 2라는 값을 가집니다. 가독성에 기초한 소스코드이며 MENU1을 Menu.FIRST + 0 으로 정의해도 됩니다.

 

레이아웃은 전혀 손대지 않은 default Hello World 입니다. 

애플리케이션을 디바이스에서 실행해봤습니다.

 

 

디바이스 메뉴 버튼을 누르니 설정한 대로 옵션메뉴가 5개나 나옵니다.

 

 

메뉴1을 클릭하니 설정한 대로 토스트창이 뜹니다.

 

이어서 컨텍스트 메뉴 추가하기에 대해서 알아보겠습니다.

컨텍스트 메뉴는 뷰를 꾹 누르고 있을 때 나오는 메뉴입니다. 컨텍스트 메뉴는 어떤 뷰에도 붙일 수 있어서 다양하게 사용할 수 있습니다. 버튼에 컨텍스트 메뉴를 붙여보겠습니다.

 

레이아웃의 모습입니다. 그냥 빈화면에 버튼만 하나 있습니다.

 

 

컨텍스트 메뉴를 적용하기 위해서는 적당한 뷰에 컨텍스트 메뉴를 등록해야 합니다. 메뉴를 등록하기 위해서는 registerForContextMenu() 메소드에 메뉴를 보여주고 싶은 뷰를 인자로 지정해서 호출해야 합니다. 그리고 onCreateContextMenu() 메소드를 작성해서 메뉴를 추가하고 이 메뉴를 선택했을 때 반응할 수 있도록 onContextItemSelected() 메소드를 작성해야 합니다. 만약 메뉴가 닫힐 때 특정 작업을 해야 한다면 onContextMenuClosed() 메소드를 구현하면 됩니다.

 

 

android.app.Activity 클래스의 컨텍스트 메뉴 관련 메소드

void registerForContextMenu(View view) : 주어진 뷰에 컨텍스트 메뉴를 등록합니다.

boolean onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)

: 뷰의 컨텍스트 메뉴가 보여져야 할 때 호출됩니다.

boolean onContextItemSelected(MenuItem item) : 컨텍스트 메뉴의 아이템이 클릭될 때마다 호출됩니다.

void onContextMenuClosed(Menu menu) : 컨텍스트 메뉴가 닫힐 때마다 호출됩니다.( 사용자가 뒤로가기 버튼이나 메뉴 버튼을 클릭하거나 아이템이 선택되었을 때 모두 호출됨).

 

 

registerForContextMenu(button) 메소드를 통해 버튼에 컨텍스트 메뉴를 추가하고 onCreateContextMenu() 메소드에서 메뉴를 생성하고 있습니다. 그리고 추가한 메뉴를 선택했을 때 동작할 코드는 onContextItemSelected() 메소드에 작성하였습니다.

 

 

디바이스에서 실행한 모습입니다.

 

 

컨텍스트 메뉴를 길게 클릭하면 의도한 대로 컨텍스트메뉴가 나옵니다.

 

 

세번째 메뉴 BLUE 를 선택하니 의도한대로 토스트가 뜹니다.

 


 

이상으로 포스팅을 마칩니다. 감사합니다.


 


 




참고서적 : 200개의 단계별 예제로 배우는 안드로이드 4.0 [제이펍]






Fin.


잘 못 된 정보가 있으면 말씀해주세요~


공감버튼 클릭은 작성자에게 큰 힘이 됩니다.  행복한 하루 되세요.


 

 

반응형