[GDSC Ewha 5th] Android Session

[GDSC Android] Chapter 4. 안드로이드 앱 만들기 (Build your first Android app) (1)

wlalsu_u 2023. 11. 8. 12:09

4.0 Build your first Android app 학습 목표

 

 

 

 

Google에서 빌드하고 배포하는 안드로이드 공식 IDE인

 

Android Studio를 이용하여 앱을 개발해보자.

 

 

 

 

 

Android Studio를 이용하여 Dice Roller 앱 만들기

 

 

 

 

 

 

Android Studio 다운로드 및 설치 방법은

 

아래의 codelab 링크를 참고하였다.

 

 

 

 

 

[ 다운로드 방법 ]

https://developer.android.com/codelabs/basic-android-kotlin-training-install-android-studio?hl=ko&continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-development-with-kotlin-4%3Fhl%3Dko%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-training-install-android-studio#0

 

Android 스튜디오 다운로드 및 설치  |  Android Developers

이 Codelab에서는 Android 스튜디오 개발 도구를 다운로드하고 설치합니다.

developer.android.com

 

 

[ 다운로드 링크 ]

https://developer.android.com/studio?hl=ko

 

Android 스튜디오 및 앱 도구 다운로드 - Android 개발자  |  Android Developers

Android 스튜디오는 Android 앱에 최적화된 통합 개발 환경(IDE)을 앱 빌더에게 제공합니다. 지금 Android 스튜디오를 다운로드하세요.

developer.android.com

 

 

 

 

 

 


 

 

 

 

 

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' 내용을 기반으로 작성하였습니다.