본문 바로가기

안드로이드

안드로이드 프로젝트 구성

안드로이드 프로젝트 구성

코드 : 프로그래밍 언어로 작성 동적인 내용

리소스 : 앱 내에 저장한 자원 정적인 내용 (이미지, 사운드, 동영상 레이아웃 등)

환경 설정: 앱에 대한 정보를 설정

 

코드나 리소스 또는 환경 설정을 변경하면 앱을 다시 심사받아야 한다.

 

 

프로젝트 파일 

AndroidManifest.xml : 테마 설정과 권한 설정 및 컴포넌트 등록

컴포넌트를 만들었는데 등록을 하지 않으면 사용할 수 없습니다.

 

Java 디렉토리

1. 첫번째 패키지 : 실제 앱의 코드가 들어가는 패키지

2. 두번째 패키지 : 안드로이드 코드 테스트 패키지

3. 세번째 패키지 : 자바코드 테스트 패키지

 

res 디렉토리 : 리소스 디렉토리

용도 별로 별도의 디렉토리를 제공

예전에는 R.java 파일이 정적으로 생성 돼서 리소스에 자원을 생성하면 R.java 파일에 상수로 등록을 하고 사용

 

지금의 안드로이드 스튜디오에서는 R.java 파일을 동적으로 생성합니다.

프로젝트에서는 볼 수 없습니다.

 

리소스는 확장자를 제외한 부분을 가지고 상수로 생성됩니다.

 

소문자와 숫자만 가능

 

musa.png 와 musa.jpg 를 삽입하는 것은 안됩니다.

 

=> gradle scripts 

gradle 은 빌드 도구입니다.

gradle설정은 build.gradle 파일을 가지고 수행 

project 라고 되어 있는 project 단위의 설정이고 module은 앱단위 설정입니다.

 

plugins 영역이 확장 기능을 추가

 

dependencies 영역은 외부 라이브러리 ( google 이 제공하는 기능이나 3rd party 개발자 제공 ) 의존성 설정 

 

파일의 내용을 수정한 경우는 상단의 Sync Now를 눌러서 빌드를 해야합니다.

 

=> 코드를 복사해서 붙여넣었는데 에러가 발생하면 [Build] - [Clean Project] 그리고 [Rebuild Project] 를 다시 해보고 그래도 안되면 Android Studio 를 재시작

 

Android Document

1. 개발자 가이드 : https://developer.android.com/guide 

 

개발자 가이드  |  Android 개발자  |  Android Developers

Android 개발자 가이드에 오신 것을 환영합니다. 왼쪽 탐색에 나열된 문서에서는 Android 프레임워크와 다른 라이브러리에서 API를 사용하여 Android 앱을 빌드하는 방법을 알려줍니다. Android를 처음

developer.android.com

 

2. 레퍼런스: https://developer.android.com/reference/packages 

 

Package Index  |  Android 개발자  |  Android Developers

 

developer.android.com

Android UI

1. 생성 

layout.xml 파일을 만들어서 코드로 전개

코드로 화면을 생성

 

1) layout.xml 파일을 만들면 미리보기를 하면서 디자인 가능

이렇게 디자인을 하면 모든 뷰 요소가 정적으로 생성

화면에 출력될 깨 모든 요소가 생성이 된 상태로 출력

 

2) 코드로 작성하면 동적으로 요소를 출력할 수 있습니다.

 

2. Activity 

화면을 구성하는 컴포넌트

화면에 보여지는 View들과 이를 제어하는 코드의 집합

처음 만들어 질 때 onCreate 라는 메소드를 호출하고 여기서 화면을 생성

setContentView 라는 메소드를 이용해서 디바이스 전체에 내용을 출력 합니다.

setContentView 에 layout.xml 파일의 아이디를 매개변수로 대입하면 화면이 생성되고

View 클래스의 인스턴스를 만들어서 대입해도 화면이 생성됩니다.

 

3. View 의 종류 : 화면에 출력 되는 종류

1) Window : 디바이스 전체 영역을 자신의 영역으로 하는 View 

Activity를 만들면 자동 생성

 

2) View: 화면에 보여지는 모든 것들은 View

3) ViewGroup : 다른 뷰들을 배치할 수 있는 뷰

4) Widjet : ViewGroup 이나 View 위에 출력 되는 뷰

 

View 

화면 출력의 최상위 클래스

 

TextView, ImageView, EditText, Button... : 화면 출력이 목적 - widget

ViewGroup : 여러개의 뷰를 배치해서 하나로 출력하는 뷰

  Layout : 서로 다른 뷰들을 모아서 출력

  AdapterView: 동일한 뷰들을 모아서 출력 - 데이터, 뷰, adapter를 가지고 출력

1. id 속성 

xml 에서 디자인 뷰를 코드에서 사용하기 위해서 설정하는 속성

레이아웃 파일 안에서는 중복 되면 안됩니다.

이전에는 코드에서 findViewById 메소드를 이용해서 인스턴스를 찾아왔습니다.

 

지금은 확장 플러그인을 추가하면 id가 프로퍼티 이름으로 Activity 에 자동으로 추가 됩니다.

 

Xml 에서 id를 가진 인스턴스를 찾아와서 사용하기 

        //setContentView(R.layout.activity_main)

       //리니어 레이아웃을 인스턴스로 생성
        var linear = LinearLayout(this)

        //버튼을 생성한 후 레이아웃에 배치
        var bt = Button(this)
        bt.text = "버튼"
        linear.addView(bt)

        //액티비티 화면으로 리니어 레이아웃 설정
        setContentView(linear)
<TextView
	android:id @+id/text
/>

=> 코틀린 파일에서는 아래 코드로 찾아 옵니다.

val text : TextView = findViewById(R.id.text)

val text = findViewById(R.id.text) as TextView

 

Kotlin Android Extension : View의 id를 프로퍼티로 사용

build.gradle 파일의 plugin 블럭에 'kotlin-android-extensions' 를 추가

Activity 파일의 상단에 import : import kotlinx.android.synthetic.main.레이아웃.* 을 추가

Activity 안에서는 View의 id 가 프로퍼티가 됩니다.

 

        setContentView(R.layout.activity_main)

        // 전통적인 방법으로 xml 에 디자인한 뷰 가져오기
        val btn : Button = findViewById(R.id.btn)
        btn.text = "전통적인 방법"

 

build.gradle(Module) 에 plugin 추가하기

apply plugin: 'kotlin-android-extensions'

 

2. 크기 관련 속성 - 필수

 

layout_width(너비), layout_height(높이)

 

값으로는 3가지가 가능

match_parent(file_parent): 부모 뷰의 남은 전체 영역에 출력

wrap_content: 자신의 contents 만큼 영역을 차지

값 단위를 직접 지정

 

=> 크기는 부모뷰의 레이아웃과 다른 뷰의 레이아웃의 영향을 받습니다.

 

=> 크기 단위 

절대 단위: px, in, mm, em - 디바이스 크기에 상관 없는 크기

상대 단위: dp(dip), sp(sip) - 디바이스 크기나 해상도에 따라 변하는 크기 - 권장

 

3. 코드에서 동적으로 속성 변경 

뷰 인스턴스.속성이름 을 이용해서 get과 set 가능

뷰 인스턴스.get속성이름() 로 가져오고 뷰인스턴스.set 속성이름 (값) 으로 설정하는 것도 가능

 

4. background

배경색 설정

색상 설정은 #RGB 형태로 가능, colors.xml 에 등록하고 사용하는 것도 가능

 

5. 여백

padding 내용물과 경계선 사이의 여백margin 다른 뷰와의 여백padding 과 margin으로 설정하면 상하 좌우 네 방향 모두 동일하게 적용paddingLeft, paddingRight, paddingTop, paddingBottom 이렇게 방향을 정해주면 그 방향에만 적용

 

6. visibility

출력 속성visible: 출력, invisible: 숨겨지지만 영역은 소유, gone: 숨겨지고 영역도 없어 집니다.

 

7. clickable, longClickable

클릭 가능 여부를 Boolean 으로 설정

 

8. focusable

포커스 가능 여부를 설정스마트 폰에서 포커스의 개념은 키보드를 사용할 수 있느냐 없느냐 입니다.

 

9. 가장 중요한 속성

1) id: 코틀린 파일에서 제어가 가능2) layout_width 와 layout_height 는 너비와 크기인데 설정 안하면 에러

 

기본 위젯

1. TextView 

텍스트를 출력하기 위한 뷰텍스트 속성에 문자열을 대입하면 그 문자열이 출력 됩니다.maxLines 속성은 출력할 라인 수를 설정-1 을 설정하면 무제한 출력 

 

autoLink : 출력된 데이터 종류에 따라서 해석을 해서 링크로 표시해서 클릭 이벤트 처리를 자동으로 수행web, email, phone, map, all 등을 제공

 

2. EditText

TextView의 하위 클래스로 키보드를 이용해서 입력이 가능합니다.inputType 속성을 이용해서 키보드 종류를 설정하는 것이 가능

 

3. ImageView

image 를 울력할 수 있는 뷰 src 속성을 이용해서 이미지 파일의 id를 설정하면 됩니다.

 

4. Button

눌러서 동작을 하도록 할 수 있는 뷰하위 클래스

    CompoundButton: 체크와 언체크 상태를 만들 수 있는 버튼

    RadioButton

    CheckBox 

    ImageButton : ImageView 의 하위 클래스