- 요약 -
1. 위젯은 넓은 의미로 View 클래스 하위의 모든 클래스를 지칭하고, 좁은 의미로 버튼, 텍스트뷰, 체크박스, 라디오박스 등 눈에 보이는 요소를 지칭합니다. 그리고 위젯을 지정 하여 놓을 수 있는 틀을 레이아웃이라고 합니다.
2. 해당 쳅터에서 사용한 위젯의 View클래스 계층도는 다음과 같습니다.
(화살표는 상속 관계를 뜻하며 -> 아래방향으로 위방향의 클래스를 상속한다는 의미입니다. 또한 빨간색 상자 TextView는 같은 클래스이며 이 클래스를 EditText와 Button클래스가 상속한다는 의미입니다. 그리고 CompoundButton은 Button클래스를 상속하며 각각 widget 요소들(체크박스, 토글버튼, 스위치, 라디오박스)은 CompoundButton을 상속합니다.)
3. View 클래스의 주요한 XML 속성으로는 id, layout_width, layout_height, background, padding, layout_margin, visibility, enable, clickable, rotation 등이 있습니다.
4. 텍스트뷰의 주요한 XML 속성으로는 text, textColor, textSize, typeface, textStyle, singleLine 등이 있습니다.
5. XML 속성은 Kotlin 코드로 설정할 수 있다. 예를 들어 background 속성은 setBackgroundColor() 메소드에서 설정할 수 있습니다.
6. 버튼은 Object -> View -> TextView -> Button의 상속 관계를 갖는다. 그러므로 View와 TextView의 XML 속성 및 메소드를 대부분 동일하게 사용할 수 있습니다.
7. 버튼의 Kotlin 코드는 다음의 세 단계를 거쳐 작성합니다.
- 버튼 변수 선언 => var testBtn : Button
- 변수에 버튼 위젯 대입 => testBtn = findViewById<Button>(R.id.Btn1)
- 버튼을 클릭할 때 동작하는 람다식 정의 => testBtn.setOnClickListener { // 동작 코드 작성 }
8. EditText의 입력값을 가져오는 코드는 다음과 같습니다..
var myStr : String = myEdit.text.toString()
9. 이미지뷰와 이미지버튼의 XML 속성으로는 이미지의 경로를 나타내는 src, 이미지의 크기를 지정하는 macHeight/maxWidth, 이미지의 확대/축소 방식을 지정하는 scaleType 등이 있습니다.
10. 컴파운드버튼(CompoundButton)의 하위 클래스는 체크박스(CheckBox), 라디오버튼(RadioButton), 스위치(Switch), 토글버튼(ToggleButton)입니다.
11. 체크박스의 Kotlin코드는 다음의 세 단계를 거쳐 작성합니다.
- 체크박스 변수 선언 => var myCheck : CheckBox
- 변수에 체크박스 위젯 대입 => myCheck = findViewMyId(R.id.ChkBox)
- 체크박스가 변경될 때 동작하는 람다식 정의 => myCheck.setOnCheckedChangeListener { compoundButton, b -> //동작 내용 작성 }
12. 라디오버튼은 보통 라디오그룹 안에 여러 개를 포함하여 사용합니다.
13. 이미지를 사용하려면 그림 파일을 [res]-[drawable]폴더에 미리 복사해놓아야 합니다.
- 연습문제 -
1. 레이아웃의 종류를 나열하고 계층도를 그리시오.
레이아웃 종류 : (LinearLayout, GridLayout, FrameLayout, RelativeLayout, TableLayout)
ViewGroup <- (LinearLayout, RelativeLayout, FrameLayout, GridLayout, AdapterView, ToolBar)
LinearLayout <- (TableLayout, RadioGroup)
FrameLayout <- TabHost
AdapterView <- (AbsListView, AbsSpinner)
AbsListView <- (ListView, GridView)
AbsSpinner <- (Gallary, Spinner)
2. layout_width, layout_height 속성값으로 match_parent를 사용하려면 안드로이드 버전이 얼마 이상이어야 하는가?
답 : Android 2.2 이상이어야 한다. Android 2.1이하 버전에서 사용 시 fill_parent를 사용해야 한다.
3. 텍스트뷰의 XML속성 및 각 속성과 관련된 메소드를 표로 정리하시오. (책에서 사용된 속성 및 메소드)
TextView XML 속성 | 속성과 관련된 메소드 |
textColor | setTextColor() |
textSize | setTextSize() |
textStyle | setTextStyle() |
typeface | setTypeface |
text | setText |
singleLine | setSingleLine() |
(더많은 XML속성 및 메소드 참조 : developer.android.com/reference/kotlin/android/widget/TextView)
4. 버튼에 클릭과 터치 외에 어떤 이벤트가 가능한지 2개 이상을 조사하고, 요약의 7번처럼 사용법의 예를 제시하시오.
- 버튼 변수 선언 => var testBtn : Button
- 변수에 버튼 위젯 대입 => testBtn = findViewById<Button>(R.id.Btn1)
- 버튼을 클릭할 때 동작하는 람다식 정의 => testBtn.setOnClickListener { // 동작 코드 작성 }
5. 안드로이드에서 색상을 지정하는 속성값은 #RRGGBB로 설정한다. 이에 대응하는 android.graphics.Color 클래스의 상수 필드를 조사하시오. (예를 들어 0xffff0000은 RED에 대응된다.)
COLOR | constant field | COLOR | constant field |
BLACK | 0xff000000 | GREEN | 0xff00ff00 |
BLUE | 0xff0000ff | LTGRAY | 0xffcccccc |
CYAN | 0xff00ffff | MAGENTA | 0xffff00ff |
DKGRAY | 0xff444444 | RED | 0xffff0000 |
GRAY | 0xff888888 | TRANSPARENT | 0x00000000 |
WHITE | 0xffffffff | YELLOW | 0xffffff00 |
6. 다음 그림은 리니어레이아웃에 버튼 2개가 들어 있는 상태이다. 그림과 같이 여백을 설정하기 위해 리니어레이아웃과 버튼 1에 각각 1개씩의 XML 속성 및 값을 설정하시오.
7. 체크박스를 선택할 때마다 버튼의 속성이 설정되도록 프로젝트를 작성하시오.
<activity_main.xml 파일>
<MainActivity.kt 파일>
8. 에디트텍스트의 키가 눌릴 때마다 바뀐 글자가 토스트 메시지로 나오도록 프로젝트를 작성하시오.
<activity_main.xml 파일>
<MainActivity.kt 파일>
(setOnKeyListener() 참고 : developer.android.com/reference/android/view/View.OnKeyListener)
9. 버튼에도 이미지를 넣을 수 있다. 다음과 같이 버튼을 클릭하면 이미지가 10도씩 회전하도록 프로젝트를 작성하시오.
<activity_main.xml 파일>
<MainActivity.kt 파일>
이상 마치겠습니다!
'책 요약하기 > 코틀린을 활용한 안드로이드 프로그래밍' 카테고리의 다른 글
#6. 고급 위젯 다루기 2021-02-03 (0) | 2021.02.03 |
---|---|
#5. 레이아웃 익히기 2021-01-29 (0) | 2021.01.29 |
#3. 안드로이드를 위한 기본적인 Kotlin 문법 2021-01-27 (0) | 2021.01.27 |
#2. 안드로이드 프로그램 개발 과정 및 간략한 구성 2021-01-26 (0) | 2021.01.26 |
#1. 안드로이드 개요 2021-01-24 (0) | 2021.01.24 |