짱짱해커가 되고 싶은 나

02. 안드로이드 프로젝트 기본 틀 본문

모바일

02. 안드로이드 프로젝트 기본 틀

동로시 2021. 1. 22. 23:10

안드로이드 스튜디오를 처음 시작하고 가장 신기한게 AVD였다. 안드로이드가 그대로 뿅 떠서 바로 확인할 수 있는 것도 좋았고 프레임워크가 정말 잘 되어 있어서 사용할 수 있는 코드들이 많아서 편한 것 같다.

 

안드로이드 프로젝트를 생성하면 MainActivity.java activity_main.xml 등이 기본으로 생긴다.

 

activity_main.xml을 보면서 코드를 익혀보자.

LinearLayout xmlns: 부분은 리니어레이아웃의 XML 네임스페이스를 URL로 지정한다. 네임스페이스는 코드 중에 1번만 나오면 되고 그 밑에 android="" 부분이 이 파일에서 사용할 네임스페이스가 되고 디폴트로 android가 지정된다.

android:layout_width에서 앞에 android:가 있기 때문에 layout_width가 android 네임스페이스에 포함되어 있는 것을 알 수 있다. layout_width는 폭, height은 높이를 나타낸다.

id는 버튼의 id를 설정하는 건데 모든 뷰와 뷰에서 상속되는 것은 id를 가질 수 있다. id지정 형식은 "@+id/아이디이름"인데 @는 리소스에서 참조한다는 뜻이고 @+는 리소스에 추가하라는 의미이다.

text 속성은 쓰일 글자이다. 여기에 직접 글을 쓸 수도 있는데 안드로이드에서는 문자열을 strings.xml에 모아두는 편이기 때문에 "@string/문자열 이름"으로 strings.xml에 해당 문자열 이름으로 문자열이 지정되어 있다는 의미다. 지금 오류가 난 이유는 아직 strings.xml에 strBtn을 만들지 않았기 때문이다.

 

res>values>strings.xml에 strBtn1의 문자열을 추가한다.

버튼이 정상적으로 만들어진 것을 확인할 수 있다.

이제 이 버튼의 기능을 추가해보자.

먼저 MainActivity.java의 기본 코드는 다음과 같다.

참고로 ctrl+alt+o를 누르면 불필요하게 임포트된 문장이 제거된다고 한다.

 

우리는 버튼에 대해 접근해야하기 때문에 멤버변수로 버튼을 하나 만든다. Button button1;을 추가하면 Button에 관한 클래스나 인터페이스를 임포트하지 않아서 오류가 발생한다. 도움말에서 버튼이 안드로이드 위젯의 버튼을 의미하는 것인지 묻고 이 때 option(alt)+enter를 하면 자동으로 임포트 해준다! 간편..!

 

그리고 oncreate 함수에 button1에 작동하는 이벤트 메소드를 정의하면 된다.

코드를 자세히 보면 먼저 MainActivity 클래스 정의 부분을 보면 AppCompatActivity클래스를 상속받고 있다. 버튼에 대한 변수는 전역(클래스) 변수로 선언한다.

onCreate 메소드가장 기본이 되는 메소드로 c의 main() 같은 함수라고 생각할 수 있다.

Activity 클래스슈퍼 클래스인데 이 클래스의 onCreate 함수를 호출한다. (자동 완성되는 코드)

setContentView()레이아웃을 화면에 표시해주는 함수R.layout.activity_main은 activity_main.xml 파일을 의미한다.

button1 변수에 버튼 객체를 넣어준다. 그리고 findViewbyID() 메소드를 사용해 activity_main.xml에 정의한 위젯(button1)에 접근할 수 있다. 이제 activity_main.xml에서 만든 버튼을 MainActivity.java에서 button1 변수를 통해 제어할 수 있다. 이때 Button 클래스니까 Button으로 캐스팅해야한다.

이제 button1을 클릭했을 때 작동하는 annonymous inner class 부분을 보자. 이 클래스의 onClick함수는 버튼을 클릭했을 때 실제로 작동하는 오버라이드된 메소드다. Toast.makeText(메시지가 출력될 컨텍스트, 메시지 내용, 출력할 시간)메시지를 잠시 나타내주는 함수다. 컨텍스트는 애플리케이션 그 자체라고 생각할 수 있는데 gettApplicatoinContext()현재 애플리케이션의 context를 구해준다. 

 

실행하면 버튼을 누르면 잠깐 동안 밑에 버튼을 눌렀어요 라는 메시지 창이 떴다가 사라지는 것을 확인할 수 있다. (귀여웡)

+ R클래스

레이아웃 파일(activity_main.xml), strings.xml에 들어있는 문자열, 버튼 등의 id, 이미지 파일 등의 id 등은 모두 R 클래스에 자동으로 등록된다. R클래스는 \app\build\generated\not_namespaced_r_class_sources\debug\r\com\cookandroid\baseapp\ 폴더에 R.java 파일로 존재한다. R.java에 등록된 정보는 모두 자동으로 등록되고 각각 고유의 16진수 값을 갖는데 이 값은 절대 직접 수정하면 안된다.

'모바일' 카테고리의 다른 글

02-3. BaseApp2 구현  (0) 2021.02.15
02-2. Android 프로젝트 구성  (0) 2021.01.28
02-1. 여러 기능을 하는 버튼 애플리케이션 구현  (0) 2021.01.23
01. HelloAndroid  (1) 2021.01.22
00. 안드로이드 개요  (0) 2021.01.04
Comments