안녕, 세상!

2. 안드로이드 애플리케이션 기초 본문

It공부/안드로이드

2. 안드로이드 애플리케이션 기초

dev_Lumin 2020. 8. 16. 23:10

(1) 기초 앱 만들기

① 프로젝트 생성

Android Studio를 실행시키고 [Start a new Android Studio project]를 클릭해서 프로젝트를 생성합니다.

프로젝트 종류는 'Empty Activity'로 설정하고 [Next]를 클릭합니다.

 

Name : 프로젝트의 이름

Package name : 도메인 이름과 애플리케이션 이름을 이어서 만든 것

Save Location : 프로젝트 저장 위치

Language : 사용할 프로그래밍 언어

Minimum API level : 이 앱이 작도하는 최하 버전 선택. 버전 점유율을 확인하고 싶으면 'Help me choose'를 누르면 됨

 

프로젝트 설정이 끝나면 [Finish]를 클릭하여 프로젝트를 생성합니다.

 

 

설정 중에는 생략되었지만 다음 2개의 항목이 내부적으로 추가되어 있습니다.

Activity Name : MainActivity 

기본 소스인 Java파일 이름(MainActivity.java)으로 지정됩니다.

 

Layout Name : activity_main

기본 화면인 XML 파일이름(activity_main.xml)으로 지정됩니다.

 

 

 

프로젝트의 오른쪽 부분에 [res] -> [layout] -> [activity_main.xml]을 클릭해서 프로젝트의 화면을 보이게 합니다.

 

 

 

 

② 화면 디자인 및 편집

화면을 가상 AVD와 동일하게 설정하려면 activity_main.xml 창의 'custom' 아이콘을 눌러서 [AVD:QPixel2]를 선택하면 앞에서 생성한 AVD와 디자인 화면을 동일하게 할 수 있습니다.

 

 

activiy_main.xml 창 왼쪽 하단에 [Text] 탭을 누르면 해당 코드가 나오는데 2번째 줄의 androidx.constraintlayout.widget.ConstraintLayout 부분을 RelativeLayout으로 변경합니다.

대/소문자를 정확히 입력해야 합니다.

 

 

다시 [Design] 탭으로 이동해서 [Enablre Autoconnection to parent] 아이콘을 누르고 왼쪽의 위젯 중에서 원하는 아무거나 몇 개를 마우스 드래그해서 오른쪽에 놓습니다.

 

 

다시 [Text] 탭으로 이동하면 방금 옮긴 위젯에 대한 코드들이 새로 생긴 것을 확인할 수 있습니다. 

이 코드들 중에 일부 위젯 코드를 지운 후 다시 [Design] 탭으로 이동 시 해당 위젯이 사라진 것을 확인할 수 있습니다.

 

XML(eXtensible Markup Language)는 구조적인 데이터를 작성하기 위한 다목적 마크업 언어로, 라이선스에 제약이 없고 플랫폼에 독립적입니다.

안드로이드에서는 화면을 구성하기 위해 XML을 사용했습니다.

 

이제 아무렇게 만든 앱을 상단의 [File] -> [Save All]을 클릭하여 변경사항을 저장합니다.

이렇게 간단하게 화면 및 디자인을 편집할 수 있습니다.

 

 

 

 

 

③ Java코드 작성 및 수정

왼쪽 상단의 <Project Tree>에서 [java] -> [com.example.helloandroid] -> [MainActivity]를 클릭해서 MainActivity.java창을 확인할 수 있습니다.

이 창에서 java 코드를 수정하면 됩니다.

우선 다음과 같은 java코드가 보일 것입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.example.helloandroid;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.os.Bundle;
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
cs

 우선 onCreate라는 메서드가 가장 먼저 시작이 될 것입니다.

setContentView(R.layout.activity_main)은 화면에 activiy_main.xml을 화면에 표시하라는 뜻입니다.

 

 

 

④ 프로젝트 실행 및 결과 확인

위에서 만든 프로젝트를 실행시키려면 메뉴의 [Run] -> [Run 'app']을 클릭하면 됩니다.

만약 AVD가 여러 개일 경우 또는 스마트폰이 연결되어 있다면 먼저 작동할 장치를 상단 중앙 툴바에서 선택할 수 있습니다.

 

 

[Run 'app']을 누르면 다음과 같이 앱이 잘 실행됩니다.

 

 

 

 

 

(2) AVD 사용법

AVD 사용법은 안드로이드 스마트폰 사용법과 동일해서 안드로이드 휴대폰을 사용하면 익숙할 것입니다.

 

① 화면 전환

화면을 가로, 세로로 바꾸려면 [ctrl]+[좌측 화살표] 또는 [ctrl]+[우측 화살표] 단축키를 누르면 됩니다.

혹은 AVD옆의 바에서 화면 회전 아이콘을 누르거나 내부에서 설정할 수 있습니다.

 

 

 

② 카메라와 갤러리

초기화면에서 위쪽으로 스와이프 하고 카메라 앱을 클릭하면 가상의 카메라 화면이 나옵니다.

셔터를 클릭하면 가상 화면이 촬영되고 [포토]에 들어가서 촬영한 사진을 확인할 수 있습니다.

 

 

 

③ 웹브라우저

크롬 버튼을 클릭하여 구글 사이트에 접속할 수 있습니다.

휴대폰에서 사용했던 웹브라우저와 같습니다.

 

 

 

④ 바탕화면 변경

바탕화면을 몇 초 동안 누른 후 [배경화면]을 선택하면 제공되는 다양한 그림을 선택할 수 있습니다.

 

 

이외의 다른 여러 가지 기능들과 설정들이 있습니다.

 

 

 

 

 

 

(3) 완전한 기능의 안드로이드 애플리케이션 

① 프로젝트 관리

프로젝트 열고 닫기

[File] -> [Close Project]를 눌러서 프로젝트로 닫고 다른 프로젝트를 선택해서 열 수 있습니다.

 

 

여러 개의 프로젝트를 열고 작업하기

[Open]을 클릭해서 열고자 하는 프로젝트를 열고 [New Window] 버튼을 클릭하면 새로운 창으로 열려서 여러 개의 프로젝트를 동시에 수행할 수 있습니다.

 

 

프로젝트 내보내기/가져오기

Android Studio 프로젝트는 내보내기 기능이 따로 없어서 프로젝트가 생성된 폴더를 통째로 복사하거나 압축해서 다른 사람에게 보내면 됩니다.

 

 

Eclipse용 프로젝트 가져오기

Eclipse에서 작성된 프로젝트를 가져올 수 있습니다. 

Android Studio 초기화면의 [Import project (Gradle, Eclipse ADT, etc.)]를 선택하고 Eclipse에 작성된 프로젝트 폴더를 선택 후 [Next]를 클릭하고 모두 체크된 상태에서 [Finish]를 클릭하고 사용하면 됩니다.

 

 

 

 

② 안드로이드 프로젝트 표준 틀

간단하게 버튼을 클릭하게 되면 특정 이벤트가 발생하는 앱을 만들면서 기본적인 틀을 파악하겠습니다.

 

우선 새로운 프로젝트를 만듭니다. (프로젝트명은 appsample로 함)

[Start a new Android Studio project] -> [Phone and Tablet] -> [Empty Activity] -> Language:java -> [Finish]

 

프로젝트 생성 후 activity_main.xml 코드의 [Text] 탭을 클릭해서 <android.support.constraint.ConstraintLayout>을 <LinearLayout>으로 바꾸고 LinearLayout에게 필요 없는 xmlns:app, tols:context 속성을 삭제합니다.

<TextView../>부분도 지웁니다.

1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
</LinearLayout>
cs

 

 

그 후 <Button> 설정을 다음과 같이 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <Button
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:id="@+id/button1"
        android:text="@string/strBtn1">
    </Button>
 
</LinearLayout>
cs

1,2 

: LinearLayout의 xmlns(XML NameSpace)를 URL로 지정함 

: xmlns는 전체 코드 중에 1번만 나오면 됨

 

3,4 : layout_width와 layout_height가 android 네임 스페이스에 포함되어 있음을 나타냄

 

7 : 버튼 시작

 

8,9 : 버튼의 폭과 높이 설정

 

10

: 버튼의 id를 표현하는데 이름이 'button1'

: @은 리소스에서 참조하라는 의미이며 @+는 리소스에 추가하라는 의미

 

11 : text 속성은 버튼에 쓰일 글자이며 strings.xml파일의 strBtn1이라는 문자열 이름의 문자열을 글자로 사용함


12 : 버튼의 끝

 

14 : LinearLayout의 끝

 

 

 

strings.xml을 설정해야 하므로 좌측 파일 트리의 [app] -> [res] -> [values] -> [string.xml]에 코드를 추가합니다.

1
2
3
4
<resources>
    <string name="app_name">appsample</string>
    <string name="strBtn1">버튼</String>
</resources>
cs

 

 

activexml_main.xml의 [Design] 탭을 누르면 잘 적용된 것을 확인할 수 있습니다.

 

 

다음 MainActivity.java코드로 가서 이벤트 발생 설정을 합니다.

 

코드를 설정하기 전에 java 환경에서 사용할 수 있는 편리한 단축기 기능을 설명하겠습니다.

[Ctrl] + [Alt] + [알파벳 o] :  불필요하게 import 된 문장이 제거됩니다.

 

(메소드에 커서를 올린 후) [Alt] + [Enter] : 해당 메소드 관련된 클래스를 자동으로 import 시킬 수 있음

 

MainActivity.java 코드를 다음과 같이 설정합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
 
public class MainActivity extends AppCompatActivity {
    Button button1;   // Button객체 button1 선언
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {  //main 함수라 생각하면됨
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        button1 = (Button) findViewById(R.id.button1);  //button1에 객체선언 activity_main.xml의 button1 객체대입
        button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){  // 버튼 클릭될 때 발생할 메소드
                Toast.makeText(getApplicationContext(), "버튼을 누르셨습니다.",Toast.LENGTH_SHORT).show();
                // 메시지를 잠시 나타내주는 메소드
            }
        });
    }
}
cs

 setContentView() : 괄호 안의 레이아웃을 화면에 표시해줌

 

 R.layout.activity_main : activity_main.xml 파일을 의미

 

findViewById() : 괄호 안의 id를 이용해 위젯에 접근하기 위해서 사용하는 메소드

 

Toast.makeText(메시지가 출력될 컨텍스트, "메시지내용", 출력할 시간) : 메시지를 잠시 나타내 주는 메소드

 

getApplicationContext() : 현재 애플리케이션의 컨텍스트를 나타내는 메소드

 

 

 

위의 코드를 run-app을 클릭하여 실행시킨 결과는 다음과 같이 버튼을 누를 때 설정한 텍스트가 잠깐 잘 나옵니다.

만약 잘 실행이 안되면 [AVD Manager]에 들어가서 해당 AVD단말기의 오른쪽 끝의 버튼을 누르고 [Wipe Data]를 누른 후 다시 실행시키면 잘 될 것입니다.

 

 

 

R클래스

R클래스는 레이아웃 파일(ex: activity_main.xml, strings.xml)에 들어 있는 문자열, 버튼 등의 id, 이미지 파일의 id 등은 모두 R 클래스에 자동으로 등록됩니다.

C:\Users\LSM\AndroidStudioProjects\appsample\app\build\generated\not_namespaced_r_class_sources\debug\r\com\example\appsample 경로의 R.java로 존재해서 메모장을 열어 확인하면 확인할 수 있습니다.

R.java에 등록된 것은 모두 자동으로 등록되며, 각각 고유의 16진수 상수를 정의하는데 절대로 직접 수정하면 안 됩니다.

그러므로 열어 볼일도 없습니다.

예시로 android:id="@+id/button1"과 같은 형식이 activity_main.xml에 있다면 이것을 Java코드에서 R.id.button1로 접근할 수 있다고 생각하면 됩니다.

 

 

 

 

 

 

(4) 안드로이드 프로젝트 구성

프로젝트에서 사용되는 폴더 및 파일의 용도

 

① manifests 폴더

AndroidManifest.xml 파일이 들어 있고, 이는 앱의 여러 가지 정보를 담고 있는 중요한 파일입니다.

필용에 따라 종종 사용됩니다.

 

 

 java 폴더

하위에 패키지 명의 하위 폴더가 있는데, 이는 안드로이드 프로젝트를 생성할 때 입력한 패키지 이름과 동일한 것입니다.

패키지 이름 아래에 MainActivity.java로 메인 Java 소스가 들어 있습니다.

주로 화면 역할을 하는 activity_main.xml에서 어떤 일을 할지를 프로그래밍하게 됩니다.

 

 

③ java (generated) 폴더

Android Studio 3.2부터 제공되는 폴더이며 시스템 내부적으로 사용되므로 특별히 신경 쓰지 않아도 됩니다.

 

 

④ res 폴더

앱 개발에 사용되는 이미지, 레이아웃, 문자열 등이 들어가는 폴더입니다.

 

(1) drawable 폴더 : 이미지 파일이 들어가는 폴더

    mipmap 폴더 : 디자인 화면이나 앱이 설치된 후에 보이는 런처 아이콘이 들어가는 폴더

        xxxhdpi, xxhdpi, xhdpi : 초고해상도 런처 아이콘 파일이 들어감

        hdpi : 고해상도 런처 아이콘 파일이 들어감

        mdpi : 중해상도 런처 아이콘 파일이 들어감

 

(2) layout 폴더 : 화면을 구성하는 xml 파일을 넣음 (activity_main.xml)이 초기화면으로 기본적으로 지정됨)

 

(3) values 폴더 

    strings.xml : 문자열을 저장하는 폴더

    colors.xml : 색깔을 저장하는 폴더

    styles.xml : 스타일을 저장하는 폴더

 

(4) menu 폴더 : 메뉴 XML 파일을 저장하는 폴더

 

(5) anim 폴더 : 애니메이션 저장 폴더

 

 

⑤ res (generated) 폴더

Android Studio 3.5부터 제공되는 폴더이며 내부적으로 사용되므로 신경 쓰지 않아도 됩니다.

 

 

⑥ Gradle Scripts 폴더

Gradle 빌드 시스템과 관련된 파일이 들어 있습니다.

   build.gradle (Module: app) : 빌드스크립트 핵심 파일. 컴파일 버전, 실행되는 최하버전, 컴파일 라이브러리 등을 등록

   local.properties : 컴파일되는 SDK의 경로가 들어 있음

   gradle.properties : JVM 관련 메모리가 설정되어 있음

 

 

 

 

 

'It공부 > 안드로이드' 카테고리의 다른 글

6. 고급 위젯  (0) 2020.08.22
5. 레이아웃  (0) 2020.08.21
4. 기본 위젯  (0) 2020.08.20
3. Java 문법  (0) 2020.08.17
1. 안드로이드의 개요와 개발 환경 설치  (0) 2020.08.14
Comments