처음부터 차근차근

애플리케이션의 기본구조 본문

프로그래밍/Android

애플리케이션의 기본구조

_soyoung 2022. 3. 15. 18:47
반응형

애플리케이션 구성

애플리케이션 = java 파일 + xml 파일 + 소리

 

애플리케이션 작성 절차

  1. 사용자 인터페이스 작성(XML) : 사용자 인터페이스 화면을 디자인하는 단계
  2. 자바 코드 작성(JAVA) : 자바를 이용하여서 코드를 작성하는 단계(activity class)
  3. 매니페스트 파일 작성(XML) : 애플리케이션을 구성하고 있는 컴포넌트를 기술하고 실행 시에 필요한 권한을 지정

 

프로젝트 폴더 설명

java : 자바 소스 들어있는 폴더

 

Gradle Scripts : 그레이들 빌드 시 필요한 스크립트 폴더

 

res : resource 줄인말. 각종 리소스들이 저장되는 폴더

예) drawable : 해상도 별 아이콘 or 이미지 파일들이 저장

layout : 화면의 구성 저장

values : 문자열 같은 리소스 저장

menu : 메뉴 리소스

 

리소스로 취급하는 거 : 레이아웃, 이미지, 문자열 등

 

 

패키지(package)

패키지(package)는 클래스들을 보관하는 컨테이너
일반적으로 인터넷의 도메인 이름을 역순으로 사용

 

 

import

import 문장은 외부에서 패키지나 클래스를 포함
앞에 android가 붙은 패키지는 안드로이드가 제공하는 패키지를 의미한다. 

 

액티비티 클래스

public class MainActivity extends AppCompatActivity { 
	... 
}

액티비티 클래스 정의

Activity로부터 상속받았으므로 액티비티가 된다.

 

액티비티 클래스 함수

public class MainActivity extends AppCompatActivity { 
    public void onCreate() { 
        setContentView(R.layout.activity_main);
    }
}

onCreate()

액티비티가 생성되는 순간에 딱 한번 호출되는 함수

모든 초기화와 사용자 인터페이스 설정이 여기에 들어간다. 

 

setContentView(R.layout.activity_main)

액티비티의 화면을 설정하는 함수

R.layout.activity_main은 activity_main.xml 파일을 나타낸다. 

XML파일과 코드를 연결한다.

 

setContentView에서 activity_main 리소스를 참조하는 방법

R.layout.activity_main

R class의 layout (static final int) 변수가 activity_main.xml 파일의 주솟값을 int 형식으로 가지고 있음

그래서 그 주솟값으로 찾아가는거 

 

 

+ button onclick 속성 부분에다 onClicked 함수를 적어줬으면

Activity class에 onClicked 함수를 정의해줘야 한다.

 

 

필요한 패키지를 가장 쉽게 프로젝트에 추가하는 tip

[File]->[Settings]->[Editor]->[General]->[Auto Import] 로 가서

Add unambigious imports on the fly

Optimize imports on the fly

에다 체크

 

 

안드로이드 애플리케이션의 실행이 시작되는 곳

안드로이드에는 main()이 없다.

액티비티별로 실행된다.

액티비티 중에서는 onCreate() 메소드가 가장 먼저 실행된다. 

 

 

사용자 인터페이스 작성 방법

2가지가 있다.

  1. 코드를 사용하는 방법(기존의 자바)
  2. XML을 사용하는 방법(안드로이드 선호 방법)

안드로이드에서는 UI 화면의 구성을 XML을 이용하는 방법을 선호한다.
xml을 사용하면 애플리케이션의 외관과 애플리케이션의 로직을 서로 분리할 수 있고,
빠르게 UI를 구축할 수 있기 때문이다.

 

 

XML을 사용해서 사용자 인터페이스 작성

UI 컴포넌트(뷰) 들은 XML의 하나의 요소로 표현된다. 
ex) TextView 컴포넌트는 <TextView ... /> 요소로 표현

 

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/textview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Hello, world!" />

xmlns:android 

xml 파일 최외곽 태그는 반드시 이 속성을 정의해야한다.

 

android:id

TextView요소에 유일한 아이디이다.

이 아이디를 이용해서 소스 코드에서 이 텍스트 뷰를 참조할 수 있다.

아이디 이름 예시) 버튼일 경우 : btnAAA

 

android:layout_width 

화면에서 폭을 얼마나 차지할 건지

 

android:layout_height

화면에서 높이(길이)를 얼마나 차지할 건지

 

layout_width, height 속성 값

  • match_parent - 부모의 크기를 꽉 채운다
  • wrap_content - 뷰가 나타내는 내용물의 크기에 맞춘다
  • 숫자 - 크기를 정확히 지정한다

 

android:text

화면에 표시하는 텍스트 설정

저 위의 코드처럼 바로 문자열을 적어도 되지만 문자열도 xml로 기술하는 것이 바람직하다.

예시)

android:text="@string/hello_world"

<resource>
	<string name="hello_world">hello, world!</string>
</resource>

 

요소 vs 속성

<img src="madonna.jpg" alt='by Raphael'/>

img : 요소

src, alt : 속성

 

xml 파일 위치 

res / layout

 

코드와 리소스를 분리하는 이유

안드로이드가 탑재된 장치들이 다양해지면서 언어나 화면 크기에 따라서, 리소스를 다르게 하는 것이 필요

 

정리

  • 애플리케이션은 컴포넌트들의 조합으로 만들어진다. 
  • 코드와 리소스는 철저하게 분리된다. 
  • 코드와 리소스는 개발 도구에 의하여 자동으로 생성되는 R.java에 의하여 서로 연결된다. 

 

 

 

출처 : 안드로이드프로그래밍(22-1학기)김용남교수 강의 내용 변형 및 요약

반응형

'프로그래밍 > Android' 카테고리의 다른 글

리스너 객체  (2) 2022.04.08
이벤트 처리  (0) 2022.03.28
android view2  (0) 2022.03.25
사용자 인터페이스 기초 - 뷰  (0) 2022.03.16
안드로이드 기초  (0) 2022.03.14
Comments