- 요약 -
1. 안드로이드의 메뉴는 옵션 메뉴와 컨텍스트 메뉴로 구분됩니다.
2. 옵션 메뉴의 설정은 다음의 세 단계를 거칩니다.
1. 메뉴 폴더 생성 및 메뉴 XML 파일 생성, 편집 |
2. Kotlin 코딩 : onCreateOptionsMenu() 메소드 오버라이딩 (해당 메소드는 MainActivity클래스 에 커서를 두고 ctrl + O(코드 - 오버라이드 메소드)에서 찾아서 생성 가능) |
3. Kotlin 코딩 : onOptionsItemSelected() 메소드 오버라이딩 (위에 상기된 방식과 동일 생성) |
3. 컨텍스트 메뉴의 설정은 다음의 네 단계를 거칩니다.
1. 메뉴 폴더 생성 및 위젯의 메뉴 XML 파일 생성 , 편집 |
2. Kotlin 코딩 : onCreate()안에 registerForContextMenu()로 등록 - 메뉴를 사용할 위젯 등록 |
3. Kotlin 코딩 : onCreateContextMenu() 메소드 오버라이딩 (상기된 방식과 동일 생성) |
4. Kotlin 코딩 : onContextItemSelected() 메소드 오버라이딩 ( 위와 동일 ) |
4. 메뉴 XML 파일의 형식은 다음과 같습니다.
<menu>
<item
android:id="@+id/item항목1"
android:title="항목1 제목"/>
<item
android:id="@+id/item항목2"
android:title="항목2 제목"/>
</menu>
5. XML 파일 없이 Kotlin 코드만으로도 메뉴를 만들 수 있습니다.
(컨텍스트 메뉴, 옵션 메뉴 둘다 가능)
6. 토스트의 일반적인 사용 형식은 다음과 같습니다.
Toast.maketext(Context context, String message, int duration).show() |
7. 대화상자의 설정 순서는 다음과 같습니다.
1. 대화상자 생성 : AlertDialog.Builder 클래스로 생성 |
2. 용도에 따른 설정 : setTitle() -> 제목 설정, setMessage() -> 내용 입력, setIcon() -> 아이콘 설정, setPositiveButton() -> (OK)버튼 설정 setNegativeButton() -> (Cancel)버튼 설정, setItems() -> 목록 출력, setSingleChoiceitems() -> 라디오버튼 목록 출력 setMultiChoiceitems() -> 체크박스 목록 출력 |
3. 대화상자 화면 출력 : show() |
8. 대화상자에 리스트 형태의 목록을 출력하고 그중 하나를 선택하게 할 수도 있습니다. setItems()는 일반적인 목록을, setSingleChoiceItems()는 라디오버튼 모양의 목록을, setMultiChoiceItems()는 체크박스 모양의 목록을 보여줍니다.
9. 토스트나 대화상자를 다양한 모양으로 나타낼 때는 레이아웃 XML 파일을 생성한 후 인플레이트하는 방식을 사용합니다.
- 연습문제 -
1. ( 1 ) 메뉴는 키패드의 메뉴 버튼을 누르면 화면 하단에 나오고, ( 2 ) 메뉴는 위젯을 롱클릭 하면 나온다.
답 :
(1) - 옵션
(2) - 컨텍스트
2. '항목 1'과 '항목 2'로 구성된 XML 파일을 코딩하시오.
먼저 menu 디렉터리와 메뉴 xml 파일을 2개 생성해줍니다.
[app] - [res(마우스 우측 버튼 클릭)] - [new] - [Android Resource Directory] - [Resource type을 menu 선택] - [ok]
[생성된 menu 디렉터리(마우스 우측 버튼 클릭)] - [new]- [Menu Resource File] - [optionmenu와 contextmenu를 각각 생성]
[optionmenu.xml]
[contextmenu.xml]
[activity_main.xml]
[MainActivity.kt]
registerForContextMenu()로 해당 위젯에 컨텍스트 메뉴를 등록합니다.
옵션 메뉴 생성 시 두가지 메소드를 오버라이딩 해줍니다.
1번은 메뉴 인플레이터를 생성하여 이전에 작성한 optionsmenu xml파일을 등록하는 과정입니다.
2번은 각 아이템 항목 마다 동작 상태를 나타낸 것이며 아이템 항목을 클릭하면 3번에 코드가 작성한 내용이 동작합니다.
1번은 컨텍스트 메뉴를 특정 위젯에 등록하는 과정입니다. 2번의 경우 파라미터 View v 가 롱클릭한 위젯으로 위의 코드에서는 버튼을 롱클릭 하면 해당 컨텍스트 메뉴가 출력됩니다. (if문을 활용하여 많은 컨텍스트 메뉴를 위젯에 등록 할 수 있습니다 :))
3번은 아이템 클릭 시 동작하는 코드이며 옵션 메뉴와 동일합니다.
[실행화면]
3. 2번의 XML 파일에 대응되는 onOptionsItemSelected()를 코딩하시오.
: (상단의 코드는 항목 1 항목 2 항목 3으로 구성된 컨텍스트메뉴와 옵션메뉴 입니다. onOptionsItemSelected() 메소드는 옵션메뉴의 아이템 클릭시 작동 코드에 대한 메소드입니다. :-() )
4. 옵션 메뉴를 선택하면 동물 사진이 바뀌는 프로젝트를 메뉴 XML 파일 없이 작성하시오.
[activity_main.xml]
[MainActivity.kt]
★ add()메소드의 파라미터는 그룹 id, 항목 id, 순번(순서), 제목 순으로 지정하면 됩니다.
항목 id가 onOptionsItemSelected()의 item.itemId의 각 id와 같게 설정하시면 됩니다 :)
5. 버튼을 클릭하면 임의의 위치에 이미지가 들어간 토스트가 나오는 프로젝트를 작성하시오.
[app] - [res] - [layout(마우스 우측 버튼 클릭)] - [new] - [Layout Resource File] - [Root element를 LinearLayout으로 변경] - [file name 입력] - [ok]
[activity_main.xml]
[toast_image.xml]
[MainActivity.kt]
(★ 부가 설명)
1.
toastView = View.inflate(this@MainActivity, R.layout.toast_image, null) : toast_image.xml 파일을 인플레이트하여 toastView(View 타입)변수에 대입합니다. |
2.
var toast = Toast(this@MainActivity) |
6. 초기화면에서 라디오버튼으로 네 가지 동물 이름을 선택할 수 있고, <그림보기>를 클릭하면 그림이 대화상자로 나오는 프로젝트를 작성하시오.
먼저 imgview.xml이라는 레이아웃을 추가해 줍니다. (이름은 뭐든 상관 없습니다 :))
[activity_main.xml]
[imgview.xml]
[MainActivity.kt]
- 라디오 그룹 위젯 변수 1
- 라디오 버튼 위젯 변수 4
- 버튼 위젯 변수 1
- 대화상자 위젯 뷰 1
- 이미지 뷰 1
< 부가 설명 >
1. imgView.xml 파일을 인플레이트 하여 dialogView에 대입합니다. |
2. when()문으로 다중 분기를 하여 선택된 라디오 버튼의 id값에 따라 이미지를 추가합니다. 또한 아이디 값에 해당하는 text값을 strTitle에 저장합니다. |
3. 대화상자를 생성하고 대화상자의 뷰를 imgView로 설정하고 화면에 출력합니다. |
[결과화면]
이상 마치겠습니다! :)) 즐거운 주말 보내세요~
'책 요약하기 > 코틀린을 활용한 안드로이드 프로그래밍' 카테고리의 다른 글
#9. 그래픽과 이미지 2021-02-14 (0) | 2021.02.14 |
---|---|
#8. 파일 처리 2021-02-09 (4) | 2021.02.09 |
#6. 고급 위젯 다루기 2021-02-03 (0) | 2021.02.03 |
#5. 레이아웃 익히기 2021-01-29 (0) | 2021.01.29 |
#4. 기본 위젯 익히기 2021-01-28 (0) | 2021.01.28 |