4.0 Build your first Android app 학습 목표
Google에서 빌드하고 배포하는 안드로이드 공식 IDE인
Android Studio를 이용하여 앱을 개발해보자.
Android Studio를 이용하여 Dice Roller 앱 만들기
Android Studio 다운로드 및 설치 방법은
아래의 codelab 링크를 참고하였다.
[ 다운로드 방법 ]
[ 다운로드 링크 ]
https://developer.android.com/studio?hl=ko
4.1 안드로이드 앱 프로젝트 구조
기본 앱 프로젝트 구조
1) Activity : 사용자의 input을 처리하는 곳으로, 일종의 칠판과 같은 역할을 함
2) Resources : layout files, 이미지, 오디오와 같은 자원/재료
3) Gradle files : 앱이 설치되어서 빌드될 것에 대한 스크립트
안드로이드 앱 프로젝트 구조
1) App : 앱을 위한 소스코드 / 리소스 / 테스트 코드
- libs : 로컬 라이브러리
- androidTest : 안드로이드 특화 테스트
- main : 자바 / 코틀린 파일
- AndroidManifest.xml : 앱의 필수 정보 선언
- test : 로컬 유닛 테스트 (ex. 각 함수가 제대로 돌아가는지)
2) build.gradle : 앱이 어떻게 빌드 / 테스트 / 전개될 것인지에 대한 스크립트
3) gradlew : 설치 없이 gradle을 실행할 수 있는 실팽 파일
4.2 안드로이드의 layout과 resources
Views
- 안드로이드에서 UI building block을 나타냄
- 직사각형의 범위를 갖고 있음
- built-in-class를 이용하여 그리거나 이벤트 핸들러를 적용할 수 있음
- ex) TextView / ImageView / Button
Layout 설정하는 방법
1) Layout Editor 사용
- GUI를 이용하여 설정하는 방법
- 왼쪽은 UI 모습을, 오른쪽은 설계도를 나타냄
2) XML Layouts 사용
- CLI 방식으로 설정하는 방법
- Layout Editor보다 더 정교한 UI 레이아웃 설정 가능
// TextView를 나타내는 XML 코드 예시
<TextView
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text="Hello World!"/>
View의 사이즈 정하기
1) wrap_content : 자동으로 정해져 있음
- 뷰 주변의 적당한 크기로 설정됨
android:layout_Width="wrap_content"
2) match_parent : 자동으로 정해져 있음
- 화면의 전체 크기로 설정됨
android:layout_width="match_parent"
3) Fixed value : 원하는 사이즈가 있는 경우
- view의 크기를 정하는 dp 단위를 사용
- dp (density-independent pixel) 는 뷰(버튼/이미지) 크기 설정 단위
- sp (scale-independent pixel) 는 글씨 크기 설정 단위
android:layout_width="48dp"
View Group 종류
View를 담는 컨테이너 역할을 하는 View Group은
아래와 같이 3가지 종류가 있다.
1) FrameLayout
- 액자형으로 안에 하나의 View만 가지고 있음
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Hello World!"/>
</FrameLayout>
2) LinearLayout
- 가로 또는 세로를 기준으로 나란히 View를 배치
- vertical : 세로로 배치
- horizontal : 가로로 배치
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView ... />
<TextView ... />
<Button ... />
<LinearLayout>
3) ConstraintLayout
- dp 값으로 제약을 주어 특정한 위치에 View를 배치
- 위 / 아래의 제약만 주는 경우 왼쪽 / 오른쪽에 대한 배치값은 알 수 없기 때문에 컴파일 오류가 남
( 왼쪽 / 오른쪽에 대한 배치값만 주는 경우도 동일)
resource 디렉토리 구조
앱을 위한 layout files / images / audio 등의 자원들은
res 폴더의 적절한 위치에 포함되어야 한다.
- drawable : 이미지 / 도형 등
- layout : 레이아웃 XML 파일
- mipmap : 앱 아이콘
- values : 계속 사용하는 정적 데이터 값
Resource ID
- 각각의 자원들은 고유한 resoucr ID를 가지고 있음
- R.java 파일에 자동으로 생성됨
- XML 파일로 직접 id를 설정하는 경우, 소문자와 언더바( _ )를 이용하여 작성
resource id를 직접 정하고 싶은 경우
XML 파일에서 <@+id/name> 형식으로 지정할 수 있다.
<TextView
android:id="@+id/helloTextView" // Resources ID 지정
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"/>
4.3 Activity
Activity는 안드로이드 앱이 갖고 있는
main goal을 의미한다.
예를 들어 카카오톡을 처음 실행하면 나오는 창은
'친구목록'이라는 anctivity(목적)을 갖고있다.
MainActivity.kt
- AppCompatActivity() 클래스를 상속받아 사용
- 상속을 받아야 activity 영역임을 인식함
- onCreate() 함수를 오버라이딩 하여 사용
- Activity 실행 -> onCreate() 실행 -> 앱 실행 -> Activity shut down 순서로 진행됨
( 안드로이드 앱의 진입점이 main() 함수가 아닌, activity 단위이기 때문에)
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?){
super.onCreate(savedInstanceState) // 부모 클래스의 onCreate() 먼저 실행
setContentView(R.layout.activity_main)
}
}
'GDSC Android 교육 세션 자료 및 강의 내용' 과 'Codelab 3강 : Classes and objects' 내용을 기반으로 작성하였습니다.
'[GDSC Ewha 5th] Android Session' 카테고리의 다른 글
[GDSC Android] Chapter 4. 안드로이드 앱 만들기 (Build your first Android app) (2) (1) | 2023.11.08 |
---|---|
[GDSC Android] Chapter 3. 클래스와 객체 (Classes and Objects) (1) | 2023.11.04 |
[GDSC Android] Chapter 2. Functions 함수 (0) | 2023.10.07 |
[GDSC Android] Chapter 1. Kotlin 기본 문법 (1) | 2023.10.07 |
[GDSC Android] Chapter 0. Kotlin을 사용한 Android 개발 (0) | 2023.09.28 |