메뉴와 다이어로그
성신여자대학교 IT 학부 우종정 교수
시작하면서
2 학습목표
목차
액티비티
리소스
응용 프로그램 디버깅
재정의 메소드 추가와 …
재정의 메소드 추가
4재정의 메소드 추가
폴더 추가
6XML 파일 생성
개요
의미
숨겨두었다가 필요할 때 화면에 표시할 수 있는 UI
애플리케이션 수준에서 옵션 ∙ 컨텍스트 ∙ 서브 메뉴를 제공
옵션 메뉴
모바일 단말기의 MENU 버튼을 누르면 화면 하단에 나타나는 메뉴를 의미
아이콘 메뉴와 확장 메뉴로 세분 컨텍스트 메뉴
화면의 특정 뷰를 길게 누르는 동작에 의하여 나타나는 메뉴를 의미
옵션 메뉴와 달리 컨텍스트에 민감한 메뉴 항목을 뷰에 제공하고자 할 때 주로 사용 서브 메뉴
옵션 메뉴나 컨텍스트 메뉴에 의한 메뉴 항목이 또 다른 항목을 포함하 는 일종의 팝업 창으로 나타나는 메뉴
서브 메뉴는 또 다른 서브 메뉴를 포함할 수 없다.옵션 메뉴
10 아이콘 메뉴:
애플리케이션 실행 도중 모바일 장치의 MENU 버튼을 클릭하면 화 면 하단에 나타나는 메뉴
최대 6개의 메뉴 항목을 지원
아이콘을 지원하는 유일한 메뉴 방식이며 체크박스 혹은 라디오버 튼을 지원하지 않는 유일한 메뉴 방식
메뉴 항목이 7개 이상이 되는 경우에는 화면 하단에 이들을 모두 표시할 수 없다.
확장 메뉴:
아이콘 메뉴에서 More라는 메뉴 항목을 누르면 노출되는 메뉴
옵션 메뉴가 7개 이상의 항목을 포함하면 6번째 메뉴 항목부터는 자동적으로 확장 메뉴에 나타난다.
옵션 메뉴
메뉴의 생성
onCreateOptionsMenu(Menu menu)
사용자가 MENU 버튼을 누르면 호출되는 액티비티 메소드
안드로이드는 표준 옵션 메뉴의 내용을 초기화하기 위하여 호출
메뉴가 만들어질 때 한번만 호출
메뉴 항목 추가
Menu 객체에 메뉴 항목이나 서브 메뉴 항목 추가
public abstract MenuItem add(int groupId, int itemId, int order, CharSequence title 혹은 int titleRes)
public abstract SubMenu addSubMenu (int groupId, int itemId, int order, CharSequence title 혹은 int titleRes)
옵션 메뉴
12 실행중 메뉴 항목 변화
onPrepareOptionsMenu(Menu menu)
실행 중에 메뉴 항목을 변경하고자 한다면 다음 메소드를 재정의
애플리케이션의 상태에 따라 메뉴 내용을 동적으로 수정하거나 메 뉴 항목을 효율적으로 활성화 혹은 비활성화
메뉴 항목 선택
onOptionsItemSelected(MenuItem item)
옵션 메뉴에서 메뉴 항목을 선택하면 호출되는 메소드
옵션 메뉴
예제
컨텍스트 메뉴
14 의미
마우스 우측 버튼을 클릭할 때 나타나는 메뉴와 개념적으로 비슷
뷰를 길게 누르면 뷰와 관련된 기능을 표시하는 플로팅 메뉴
컨텍스트 메뉴를 생성하는 방법은 구조적으로 옵션 메뉴와 유사.
그러나 컨텍스트 메뉴는 액티비티 혹은 특정 뷰에 종속된 메뉴이 므로 뷰와 컨텍스트 메뉴를 연관시켜야 함
컨텍스트 메뉴는 ListView 항목을 취급할 때 자주 사용하지만 어떤 뷰를 위해서도 생성 가능
컨텍스트 메뉴
메뉴 생성
onCreateContextMenu (ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
메뉴 항목 선택
onContextItemSelected(MenuItem item)
컨텍스트 메뉴의 뷰에 등록
registerForContextMenu(View view)
setOnCreateContextMenuListener(View.OnCreateContextMenuList ener l)
컨텍스트 메뉴
16 예제
메뉴 전개
의미
리소스를 사용하여 정의한 메뉴를 코드로 정의
메뉴도 리소스이기 때문에 코드가 아닌 XML 파일을 사용하면 훨 씬 쉽게 정의
메뉴 구조를 정의한 리소스 XML 파일을 다른 리소스처럼 프로젝 트의 res/menu 폴더 혹은 res/string 폴더에 저장 가능
메뉴의 종류가 많으면 res/menu 폴더를 생성하여 메뉴를 위한 XML 파일을 관리
메뉴 전개
18 XML 파일로 메뉴 정의
3개의 유효한 엘리먼트 - menu, group, 그리고 item - 가 존재
루트 엘리먼트는 반드시 menu
item과 group 엘리먼트는 menu의 자식
또한 item 엘리먼트는 group 엘리먼트의 자식이 될 수 있음
서브 메뉴를 생성하기 위하여 또 다른 menu 엘리먼트가 item의 자 식이 될 수도 있음
메뉴 전개자 생성과 메뉴 전개
메뉴 전개자 생성
public MenuInflater getMenuInflater ()
현재 액티비티에서 MenuInflater 객체를 생성하여 반환하는 메소드메뉴 전개
예제
개요
의미
문자 그대로 시스템과 대화하기 위한 윈도우
사용자에게 시스템의 현재 상태 및 오류 사항 등을 알려주기 위하 여 경고 메시지를 띄우거나 질문 사항을 보내어 사용자의 선택을 받아들이는 기본적인 통신 수단
다이어로그는 View 클래스와 무관. 따라서 XML 리소스 파일로 생 성하지 않고 코드로 생성 가능
대표적인 Dialog 클래스
경고 다이어로그
22 의미
윈도우즈의 모달 다이어로그 방식과 유사
경고 다이어로그에서 버튼을 누르지 않으면 진행하던 작업으로 돌 아가거나 다른 작업으로 진행할 수 없음
작업의 결과나 경고 등 중요한 메시지를 사용자에게 전달할 때 경 고 다이어로그를 사용
Dialog 클래스의 확장 클래스
경고 다이어로그
생성과 표시
AlertDialog.Builder(Context) 메소드를 사용하여 Builder 객체를 생 성한 후 경고 다이어로그의 세부 속성을 설정
AlertDialog.Builder() 메소드의 매개변수인 Context를 위해서는 다 이어로그를 생성하는 부모 액티비티를 사용
세부 속성을 설정한 후 show() 메소드를 사용하면 Builder 객체를 생성하고 화면에 표시
세부 속성 설정
public AlertDialog.Builder setIcon (int iconId 혹은 Drawable icon)
public AlertDialog.Builder setMessage (int messageId 혹은 CharSequence message)
public AlertDialog.Builder setTitle (int titleId 혹은 CharSequence title)
경고 다이어로그
24 예제 1
경고 다이어로그
경고 다이어로그의 3가지 버튼 설정
public AlertDialog.Builder set...Button (CharSequence text 혹은 int textId, DialogInterface.OnClickListener listener)
…은 Negative, Neutral, Positive 중 하나
Back 버튼에 의한 다이어로그 취소 금지
public AlertDialog.Builder setCancelable (boolean cancelable)
경고 다이어로그
26 예제 2
경고 다이어로그
3개의 버튼 외에 리스트 혹은 체크박스와 라디오버튼의 추가
public AlertDialog.Builder setItems (CharSequence[] items, DialogInterface.OnClickListener listener)
예제 3
경고 다이어로그
28 예제 4
날짜 선택 다이어로그
의미
달력을 기준으로 월 ∙ 일 ∙ 연도을 선택하는 위젯
DatePicker를 포함하는 간단한 다이어로그
날짜 선택 다이어로그에서 사용자가 선택한 날짜 값을 받아올 수 있도록 OnDateSetListener()를 설정
날짜 선택 다이어로그에서 연월일 값을 선택하면 onDateSet() 메 소드를 호출하며 이 메소드를 통해 사용자가 선택한 연월일 값을 화면에 표시