1차 세미나 in 한양대학교
- Android Studio에서 만든 프로젝트를 분석
- View 컴포넌트
- Kotlin에 대한 가벼운 내용
Android Studio의 프로젝트 구조를 이해해보자.
1. Android Manifest 파일
- 앱의 정보를 가지고 있는 파일이다.
- 각종 권한을 등록할 수 있다. [추후에 실제 프로그래밍을 해보면서 적용해 볼 예정. :)]
- 패키지 명(추후에 앱의 고유 id 생성에 영향을 미침.)
- icon [앱의 아이콘 이미지 설정] / label [앱의 name을 설정]
- theme : 앱 전역에서 사용할 테마를 설정한다.
- Activity 등록. intent-filter 태그 안에서 action과 category를 통해 어떤 Activity가 먼저 시작될 것인지 결정할 수 있다.
2. Activity 파일
- 하나의 Activity 파일은 하나의 layout을 가진다.
- 하나의 Activity는 하나의 화면을 의미한다.
3. layout 파일(xml)
- Activity나 Fragment의 UI를 구성할 수 있는 layout을 정의한다.
- 쉽게 말해서 뷰를 짜는 공간이라고 생각하면 된다.
4. build.gradle
- 버전 관리를 할 수 있다.
- 최소 버전과 타겟 버전을 설정할 수 있다.
- 또한, 외부 라이브러리를 명시할 수 있다.
View 컴포넌트에 대해서
(1) Widget
Button, TextView, EditText, ImageView 등을 Widget이라고 부른다. 아래는 자주 사용되는 View Widget이다.
- TextView : 문자열을 보여줄 Widget
- EditText : 문자열 입력이 가능한 Widget
- ImageView : 리소스 이미지를 보여줄 Widget
- Button : Button 이벤트 처리가 가능한 Widget
참고로 다른 뷰로 버튼과 똑같이 구현할 수 있다.
(2) ViewGroup
LinearLayout, RelativeLayout, ConstraintLayout 등을 View(view, ViewGroup)들을 둘러싼 ViewGroup이라고 부른다.
View란 눈에 보이는 모든 구성 요소를 말한다. Button이나 TextView들도 View가 될 수 있고, Widget을 배치할 수 있는 Layout들도 View가 될 수 있다. 지금 부터는 자주 사용되는 ViewGroup에 대해서 알아 볼 것이다.
1. LinearLayout
내부 View(Widget, ViewGroup)들을 선형으로 배치하는 경우에 사용하면 유리하다. Orientation 속성을 통해 vertical(수직 방향), horizontal(수평 방향)을 지정할 수 있다. 주로 일정하게 줄지어진 뷰를 구성할 때 편리하며 자주 사용된다.
- layout_weight : view가 차지하는 비중을 설정할 수 있다.
- gravity : 본인 뷰 내부의 뷰의 위치를 설정할 수 있다.
- layout_gravity : 부모 뷰를 기준으로 본인의 위치를 설정할 수 있다.
2. RelativeLayout
내부 View(Widget, ViewGroup)들을 상대적으로 배치한다. 특정 뷰를 기준으로 하여 다른 뷰를 배치한다. 또한, 일정하게 정렬되지 않은 뷰를 짤 때 사용한다. 겹치는 뷰를 짤 때 유용하게 사용할 수 있다.
아래는 RelativeLayout에서 자주 쓰는 View 옵션을 크게 두 가지로 나누어서 설명했다.
(1). RelativeLayout 내부에서 View가 가질 수 있는 옵션
(2). RelativeLayout 내부의 View끼리 가질 수 있는 옵션으로, View A의 id와 View B의 id를 통해 상대적인 위치를 결정한다.
Kotlin에 대한 가벼운 내용
Kotlin에 대해서 정말 간단한 내용만 짚고 넘어가고자 한다. 추후에 기회가 된다면 Kotlin 공부한 내용을 조금이라도 포스팅 할 생각이다.
(1) 변수 선언 및 상수 선언
Kotlin에서 변수와 상수의 선언은 자바에서 선언하던 방식과 다르다. 자바에서는 ‘타입 변수명 = 값’ 의 형태로 변수 혹은 상수를 선언하였다면 Kotlin은 이와 조금 다른 방식을 갖는다.
실습과 관련된 코드들은 https://github.com/WooVictory/Doit_23th_SOPT에서 확인 해주세요. :)