본문 바로가기

모바일/안드로이드

예제 -1- 안드로이드 프로그래밍, 간단한 어플리케이션

안드로이드 스튜디오를 이용하여 안드로이드 프로그래밍을 배우고 있습니다.

책에 있는 예제를 풀어보고 과정을 기록하고 설명하는 위주의 포스팅이 될 것 같네요.

우선 처음에 알아두면 편한 안드로이드 스튜디오의 단축키 몇 개를 알아볼게요.


Ctrl + Alt + L 소스 자동 정렬 (이클립스의 Ctrl + Shift + F)

Ctrl + Shift + Enter 커서가 위치한 라인에 세미콜론(;) 찍기

Ctrl + Tab 창 전환 (클래스파일과 xml 파일간의 이동에 편의성이 있음)


단축키를 한번에 여러개 외우려고 하면 헷갈리기만하고 잘 쓰지 않게 되므로

처음에 알고 사용하면 가장 유용하다고 생각하는 단축키 3개 입니다.


 


이번에 만들 간단한 어플리케이션은 이런 모양입니다.

EditText에 Url을 입력받아 글자 나타내기 버튼를 누르면

Toast를 이용해서 화면하단에 입력되어있는 Url을 메시지로 띄웁니다.


Url을 입력하고 홈페이지 열기 버튼을 누르면

Url에 해당하는 홈페이지 화면으로 이동합니다.


라디오 버튼이 2개가 있는데, 킷캣과 롤리팝 중 하나를 선택하면

해당 그림 파일을 이미지뷰에 표시하는 간단한 어플리케이션입니다.


우선 개발툴 설치나 설정, 프로젝트 만들기같은 과정은 쉽게 찾아보실 수 있으므로

모든 과정을 마쳤다는 가정하에 시작하겠습니다.


 


프로젝트를 처음 만들고 메인 액티비티를 열면 처음에

RelativeLayout으로 설정 되어있죠. 레이아웃에 관한 설명은 추후 진행하면서

차차 알아볼 것이므로 지금은 우선 줄 단위로 화면을 구성하는

LinearLayout을 사용한다고 알아둡시다.


 


릴레티브 레이아웃을 리니어 레이아웃으로 바꿔줍니다.

리니어 레이아웃을 사용할 때 반드시 필요한 속성이

orientation속성입니다. 이 속성의 값으로는 vertical, horizontal이 들어갈 수 있습니다.

말 그대로 줄 단위로 구성하는 리니어 레이아웃의 내부 요소들을

어떤 방향으로 위치시킬것인지를 의미합니다.

vertical을 넣어준다면 수직으로 위치시킨다는 의미이므로

내부 요소들이 한 줄씩 위치를 하겠죠. 즉 한 라인에 여러개의 내부 요소가 위치할 수 없습니다.

Ex) 버튼1

     버튼2

     버튼3


반대로 horizontal을 넣어준다면 한 라인의 내부 요소들을 수평으로 위치시킨다는 의미입니다.

Ex) 버튼1 버튼2 버튼3



 


당연히 우리는 vertical을 사용해야 겠죠.

이제 위와 같이 내부요소들을 화면에 위치시켜 줍니다.

EditText는 텍스트를 입력받을 수 있으며, 버튼은 일반적으로 알고 계신 그 버튼입니다.

RadioButton의 경우 보통 여러개의 라디오버튼 중 하나만 선택할 수 있게 하므로

RadioGroup라는 요소 안에 위치시켜주면 이 그룹안에서는 하나의 요소만 선택이 가능하게 됩니다.

ImageView는 src를 지정해서 화면에 이미지를 띄워주기 위한 위젯이구요.

위젯들에 들어간 속성은 단순하기도 하고 대부분 알고 계시므로 생략하겠습니다.


다만 한가지 알아두셔야 할 것이 layout_gravity와 gravity입니다.

layout_gravity는 부모의 기준에서 자신의 위치를 결정하는 속성입니다.

위처럼 라디오그룹의 위치를 center로 해주면 부모 뷰인 리니어 레이아웃의 중앙부에 위치하게 되는거죠.

반대로 gravity는 view자신의 내부 요소들의 정렬입니다.

예를 들어 TextView라면 자신의 내부 요소인 Text의 위치를 정할 수 있습니다.



 



이제 Ctrl + Tab 단축키를 이용해서 MainActivity.java 파일로 이동합시다.

onCreate메서드는 안드로이드 호출의 첫번째 순서인 메서드입니다.

자세한 내용을 설명하자면 길어지므로 깊게 알고 싶은 분은 검색하시길...

우리가 xml파일에 선언한 위젯들의 값을 조작하고 이용하고위해서는

이러한 자바 클래스에서 객체들을 사용해야합니다.

여기서는 버튼 2개, 에딧텍스트 1개, 이미지뷰 1개, 라디오 그룹 1개, 라디오 버튼2개가 필요하겠죠.


 


안드로이드에서 제공하는 위젯을 클래스에서 사용하기 위한 방법은 간단합니다.

해당 위젯의 클래스의 인스턴스를 선언하고, findViewById 메서드를 이용해서

xml에서 설정한 id를 통해 객체를 생성하면 되죠.

findViewById 메서드 사용 시 주의할 점은 반환을 View형으로 하기 때문에

변수에 대입할 때는 반드시 해당 위젯의 View로 캐스팅을 해주어야합니다.


글자 나타내기부터 시작해보겠습니다.

안드로이드화면에 알림메시지를 띄우는 기능을 제공하는 클래스로 Toast가 있습니다.

Toast의 static메서드인 makeText를 이용해서 메시지를 출력합니다.

우리는 btnShowText라는 버튼을 사용자가 클릭하면 알림 메시지를 띄워야 하므로

setOnClickListener메서드를 사용해서 새로운 온클릭리스너를 매개로 받아

onClick메서드를 오버라이드 해서 사용해야합니다.



btnShowText를 입력하고 .set까지 입력하면 자동완성 기능으로 인해

하단에 메서드가 표기됩니다. setOnClickListener를 선택하고 엔터를 눌러주세요.


 

그럼 매개변수가 비어있는 메서드가 자동완성이 되는데, 이 때 매개변수에 new On까지쓰시면

또 자동완성으로 onClickListener(...)이 목록에 나옵니다. 선택하고 엔터를 눌러줍시다.


 


그러면 이와같이 onClick메서드까지 자동 오버라이드가 되어

코드가 완성됩니다. 자바를 배우신 분이라면 아시겠지만

이렇게 완성된 메서드는 익명 내부 클래스(Anonymous inner class)입니다.

이제 앞서 설명드린 Toast객체를 이용해 메시지를 띄워야겠죠.

Toast.makeText(출력될 컨텍스트, "표시할 메시지", Toast에서 제공하는 출력시간).show();

토스트 객체의 makeText의 사용법은 위와 같습니다.

첫번째로 컨텍스트가 들어가는데 이 컨텍스트는 애플리케이션 그 자체라고 생각하시면 됩니다.

두번째는 표시할 메시지를 지정합니다.



3번째는 Toast 클래스에 정의되어있는 static final int형 변수인 SHORT, LONG을 사용합니다.

각각의 의미는 보이는 그대로 짧은시간, 긴시간입니다.

그럼 이제 실제로 우리의 예제처럼 똑같이 만들기 위해

라디오버튼 중 kitkat을 기본 체크된 상태로 만들고

글자 나타내기 버튼을 선택시 입력되어있는 url을 화면에 메시지로 표시해보겠습니다.


 


라디오 버튼은 라디오 그룹에 속해있으므로 라디오버튼객체에 check메서드를 사용합니다.

check 메서드의 인자는 int형으로 체크하기위한 라디오버튼의 id를 지정합니다.


글자나타내기버튼의 객체인 btnShowText의 onClick메서드 내부에

에딧텍스트인 editUrl의 내용을 받아옵니다. 받아온 내용을 문자열로 사용하기 위해선

toString()함수를 반드시 써주어야합니다.


그렇게 입력된 url을 받아온 뒤에는 이제 메시지로 표시해야겠죠.

makeText의 첫번째 인자로는 getApplicationContext()가 들어갑니다.

이 메소드는 현재 어플리케이션의 컨텍스트를 반환합니다.

두번째 인자로는 앞서 읽어온 url을 메시지로 지정합니다.

세번째 인자로는 짧은 시간동안 잠깐 표시하고 사라질 메시지이므로

Toast.LENGTH_SHORT를 지정하고 맨 뒤에 .show()를 이용해 화면에 띄워줍니다.

그럼 이제 자신의 안드로이드 폰이나 AVD를 이용해서 실행을 해보겠습니다.



 

에딧텍스트에 아무 글자나 입력하고 글자 나타내기 버튼을 누르면

오른쪽 화면에 보이는 것처럼 화면 하단에 그 글자가 출력됩니다.


다음 장에서 홈페이지 열기와 라디오그룹의 체크 상태가 변경될때마다

이미지뷰의 이미지를 바꿔주는 기능을 추가하겠습니다. 

'모바일 > 안드로이드' 카테고리의 다른 글

안드로이드를 위한 자바문법 -2-  (0) 2017.01.19
안드로이드를 위한 자바문법 -1-  (0) 2017.01.18