[안드로이드 기초] Include (인클루드)
▣ 안드로이드 기초 [ Include ] ● 안드로이드에서 레이아웃을 배치할때 여러개의 Layout에서 공통으로 사용하는 레이아웃이 있을 경우나, 하나를 여러개의 레이아웃으로 구성해서 작성할 경우에 사용되는 xml 태그가 "Include"인데요. ● 예를 들어 앱 사이트를 생각해 보겠습니다. 사이트는 제일 상단에 메뉴바, 베너, 메뉴버튼....등 이 위치하고 중간에 메뉴에 따른 내용이 출력이 되고 , 제일 하단에는 보통 회사의 주소, 전화번호 등...이 입력되어 있잖아요. 이때 만약에 중간 내용 출력부분에 링크가 걸려있는 글을 따라서 다른 화면으로 넘어가게 되면 다른 화면이 출력이 될겁니다. 그러나 상단 메뉴쪽과 하단 주소...쪽은 그대로 화면에 출력이 되고 중간부분의 내용만 바뀌게 될겁니다. 이런 화면..
이클립스 안드로이드 프로젝트 구성요소
▣ 이클립스 안드로이드 프로젝트 구성 요소 ● 프로젝트를 생성하면 기본적으로 만들어지는 소스들이 어떠한 형태로 만들어지며, 어떤 기능들을 하지는지 살펴보도록 하겠습니다. 먼저 다음과 같이 이름이 "AAA"인 프로젝트를 하나 생성했습니다. 위의 그림은 이름을 "AAA"라고 한 프로젝트를 생성하면 기본적으로 나타나는 화면입니다. 왼쪽의 Package Explorer 창을 먼저 살펴보면 "AAA"는 프로젝트 이름이고, 그 밑으로 com.example.aaa라는 패키지 이름과 MainActivity.java 라는 액티비티 파일이 보이네요. 그리고 기본적인 화면 디자인을 담당하는 activity_main.xml이라는 파일이 만들어지고 R.layout에 등록이 되어서 화면에 출력이 되게 됩니다. 액티비티에서 R.l..
안드로이드 프로젝트 생성
안드로이드 포르젝트 생성 ■ 안드로이드 프로그램을 작성하기 이클립스를 사용하실텐데요. 이클립스에서 안드로이드 프로젝트를 생성할때는 일반 자바 프로젝트에 비해 몇가지 더 설정해줘야 할게 있기는 하지만 거의 비슷합니다. 물론 이클립스에 안드로이드 관련 플러그 인이 설치가 되어 있어야 겠죠. ⊙ 개발환경 구축(ADT, SDK 설치) ▶ http://kd3302.tistory.com/34 ■ 간단한 프로젝트를 하나 만들어보면서 과정을 살펴보겠습니다. ■ 안드로이드 플러그인이 설치되어 있는 상태에서 [PackageExplorer]에서 오른쪽 버튼을 클릭하하고[ New ▶ Android Application Project]를 선택하면 다음과 같은 [New Android Application] 창이 나타나는데요. 이..
[안드로이드 기초] Gravity(중력)을 이용한 FrameLayout 배치
[안드로이드 기초] Gravity를 이용한 FrameLayout 배치 ■ 프레임 레이아웃은 중력(Gravity)를 이용한 레이아웃 배치입니다. 서로 겹쳤을때도 투명도를 조절해서 서로 겹치는 효과도 표현할 수 있고, 때에 따라서는 같은 자리에 어떤 객체는 나타나고 어떤것은 나타나지 않게 표현할 수도 있습니다. ■ 간단한 예제를 하나 만들어가면서 FrameLayout이 어떻게 배치되는지 살펴보도록 하겠습니다. 예제는 겹치는 효과를 표현해 볼거구요. 전체 레이아웃을 프레임 레이아웃으로 구성하고 그안에 두개의" FrameLayout"과 하나의 "RelativeLayout"을 배치해서 적당현 투명도를 설정하여 겹쳤을때 명도 변화를 살펴보도록 하겠습니다. ■ 프로젝트를 생성하고 기본 레이아웃 배치를 살펴보겠습니다...
[안드로이드 레이아웃 배치] LinearLayout과 RelativeLayout
안드로이드 레이아웃 배치 LinearLayout / RelativeLayout ■ LinearLayout은 이 레이아웃에 있는 객체들이 가로 또는 세로로 나열되도록 하고, RelativeLayout은 안에 있는 객체들이 서로 상대적으로 배치되게 정의하는 방식을 사용하는데요. 때문에 LinearLayout은 규칙적인 배치에 적합하고, RelativeLayout은 객체들을 자유롭게 배치하고 싶을때 사용하게 됩니다. ■ xml 파일에 두개의 레이아웃을 세로로 배치하고, 각 레이아웃안에 텍스트뷰 객체를 넣어서 위치 설정을 해서 어떻게 배치가 되는지 알아보겠습니다. ■ 먼저 상속구조를 살펴보겠습니다. ■ 그래픽 레이아웃에서 다음과 같이 전체를 LinearLayout(세로) 로 묶고 그 안에 LinearLayout..
안드로이드 AVD 한글자판 설치하기 (adb)
안드로이드 AVD 가상기기 한글입력기 설치하기 (adb) 안드로이드 앱 개발을 위해서 AVD 가상기기에 한글 자판은 필수겠죠. 따로 언어 설정을 하지 않았다면 아마 영어만 나타날것입니다. 한글로 설정하고 입력받는 과정을 알아보겠습니다. ■ 언어에 대한 설정은 로케일(Locale) 설정과 입력기(Input Device)설정 두가지가 있는데요. 로케일 설정을 먼저 하겠습니다. AVD를 실행해서 위 그림처럼 아래쪽에 앱 목록을 클릭해서 다음과 같이"Custom Locale"를 선택합니다. 로케일 리스트가 나오는데요. 여기서 "ko_KR"을 길게 눌러줍니다. 안드로이드에서는 "선택"과 "확인"을 구분하기 위해서 롱클릭이라는 개념을 사용하고 있습니다. 길게 누르면 확인여부를 뭍는 창이 나타납니다. 한글로 변경이 ..
[안드로이드 기초] RadioGroup /RatingBar
안드로이드 RadioGroup ■ 라디오그룹은 RadioButton 여러개를 하나의 그룹으로 묶어서 그것들 중 하나만 선택이 되게 하는 기능을 가진 객체입니다. 세개의 라디오버튼을 하나의 그룹으로 묶어서 그중에서 선택된 결과값을 텍스트뷰에 출력하도록 하는 간단한 예제를 하나 만들어 보겠습니다. ■ 이 프로젝트는 RadioGroup안에 RadioButton을 세 개 배치하고, 그 아래쪽에 텍스트 뷰 두개를 넣어서 첫번째는 안내문 형식으로 넣고, 두번째 텍스트 뷰에는 선택된 결과값을 출력하도록 하는 내용입니다. ■ xml소스를 살펴보겠습니다. ■ 다음으로 MainActivity 파일에서 이것들에 대한 클릭 이벤트를 작성합니다. ■ 세개의 버튼을 아이디로 찾아서 각각 클릭 이벤트를 작성합니다. 어떤 버튼을 클..
[안드로이드 기초] SeekBar 예제
[안드로이드 기초] SeekBar ● SeekBar는 프로그레스바에 드래그할 수 있는 타겟을 (Draggable Thumb)를 추가하여 만든 객체인데요. 예를 들어 핸드폰에서 화면 밝기나 음량크기 등을 조절할때 드래그해서 사용하는 객체라고 생각하면 이해가 빠를겁니다. 그림처럼 생긴 형태입니다. ● 그림에서 보는것과 같이 드래그하거나 터치하면 막대에서 선택된 값을 텍스트 뷰에 출력하는 간단한 예제 프로젝트를 만들보겠습니다. ● 먼저 SeekBar의 클래스 상속관계부터 보고 프로젝트를 생성하겠습니다. ● 프로젝트를 생성해서 텍스트뷰 두개와 SeekBar 하나를 배치하고 선택된 값이 출력되는 부분은 배경을 라운드박스 처리해보겠습니다. 먼저 다음과 같이 객체들을 배치합니다. ● xml소스를 살펴보겠습니다. ● ..
[ 안드로이드 기초 ] 프로그레스바 (ProgressBar)
[안드로이드 기초] 프로그레스바(ProgressBar) ● 프로그레스바는 '진행 바' 정도로 생각하면 될텐데요. 어플을 실행하거나 뭔가를 다운 받을때 진행 정도를 표현해주는 것들입니다. 많이들 봤겠지만 이것은 원형과 막대형이 있구요. 또 이것들을 Dialog안에 넣어서 새로운 창으로 띄워서 표현 할 수도있습니다. 예제를 만들어가면서 일반 원형, 막대형과 새로운 창을 띄워서 나타나게 하는 형태까지 구현해 보겠습니다. ● 다음과 같이 '원형'과 '막대형' 프로그레스바를 두개 설치하고, 토글버튼 두개, 일반 버튼 두개를 배치를 했습니다.프로그램을 실행할때는 보이지 않다가 첫번째 토글버튼을 클릭하면 원형바가 나타나 작동을 하고, 두번째 토글버튼은 막대형바가 나타나 진행을 합니다. 일반 버튼은 상자를 따로 화면에..
[안드로이드 기초 ] 스피너 (Spinner)
안드로이드 스피너 (Spinner) ● Spinner 객체는 선택할 수 있는 상자를 화면에 출력하고 그 상자를 클릭하면 목록이 나타나는 형태인데요. 안드로이드에서는 목록을 나타나게 할 때 "Adapter"라는 객체를 이용합니다. 이것은 행 레이아웃과 여기에 매핑할 테이터를 정의하는 기능을 합니다. 예제를 하나 만들어가면서 어떻게 적용이 되는지 살펴보도록 할게요. ● 먼저 상속관계를 살펴보도록 하겠습니다. ● 간단한 프로젝트를 하나 만들겠습니다. 이 프로젝느는 main.xml에 Spinner 세개를 배치하고 ,그 목록을 선택했을때 텍스트 뷰에 내용을 조합해서 출력하도록 하겠습니다. ● 스피너 세개와 텍스트뷰 두개를 배치하고 위와같이 설정하였습니다. xml파일을 살펴보도록 하겠습니다. ● android:pr..
[안드로이드 어플 개발] 라디오버튼(RadioButton)
안드로이드 라디오버튼(RadioButton) ■ 안드로이드 버튼중에서 이번에는 RadioButton에 대해서 알아보도록 하겠습니다. 이것은 체크박스와 비슷하지만 한번 체크한것은 다시 Off시키지 못하는 점이 다른데요. 간단한 예제를 하나 만들어보고 어떻게 다른지 살펴 보도록 하겠습니다. ■ 상속관계를 살펴보면... ■ 먼저 프로젝트를 하나 생성하고 xml파일에 라디오 버튼을 두개 배치하고 그 밑에 텍스트뷰를 배치하고 선택한 결과가 출력되도록 하겠습니다. 그래픽 레이아웃에서 텍스트뷰와 라디오버튼을 추가했습니다. 마지막 지난 포스팅때 만들어놓은 라운드 박스를 배경으로 배치하였습니다. ■ main.xml소스를 살펴보도록 하겠습니다. ■ 모두 원래 객체의 크기를 유지하게 했고, 마지막에 출력되는 부분만 가로폭을..
[안드로이드 게임 만들기] 미사일 발사
▣ 안드로이드 게임 만들기 ■ 지금까지는 플레이어와 적의 등장과 움직임 등을 만들어 봤습니다. 발사하는 과정을 진행해 보겠습니다. ■ 디자인이 허접해도 이해해 주세요. ㅎㅎ 그리고 지난 포스팅까지는 비행기를 움직일때 키보드를 움직이는 과정으로 진행했었는데요. 요즘 스마트폰은 키패드가 없잖아요. 그래서 게임들을 보면 터치하고 움직이면 손가락을 따라서 비행기가 움직이면서 미사일은 계속 발사가 되는데요. 여기서도 그렇게 만들어보겠습니다. 그런데 제가 아직 실력이 부족해서 처음에 터치를 했을때 비행기의 처음위치에서 움직이게 구현하는걸 아직 해결을 못했네요. 그러니까 지금 소스는 화면의 위쪽을 터치를 하면 비행기가 그 위치로 따라와 버립니다.ㅠ.ㅠ; 그 과정은 해결하는데로 다시 수정하기로 할게요. 혹시 조언 해주..
[안드로이드 기초] 체크박스(CheckBox)
안드로이드 체크박스(CheckBox) ■ 체크박스는 지난번에 봤던 토글버튼 처럼 선택 여부를 보여주는 버튼이구요. 예제 프로젝트를 만들어 가면서 하나씩 살펴보도록 하겠습니다. ■ 먼저 상속관계를 살펴보겠습니다. ■ 프로젝트를 하나 생성합니다. ■ 위와 같이 main.xml에 텍스트와 CheckBox를 배치하고 매인 액티비티에서 체크상자에 대한 이벤트를 설정하도록 하겠습니다. 체크박스를 선택하면 아래쪽 선택결과에 선택한 내용이 출력되게 할겁니다. ■ 그리고 선택결과 부분이 둥근 사각형인데요. 이거 만드는 것부터 먼저 알아보고 넘어가도록 할게요. 먼저 res폴더에 새로운 폴더를 하나 만들고 [drawable]로 했구요. 그 폴더안에 새로운 "안드로이드xml" 파일을 생성합니다. ■ 다음과 같은 창이 나타나면..
[안드로이드 어플 기초] 토글버튼 (ToggleButton)
■ 토글 버튼은 어떤 특정 상태를 On/Off할때 사용하기에 유용한 버튼인데요.간단한 프로젝트를 만들어 보면서 어떻게 작동하는지 알아보도록 하겠습니다. 먼저 계층 구조를 살펴보면.... [안드로이드 어플 기초] 토글 버튼 (ToggleButton) ■ 간단한 프로젝트를 하나 만들건데요. main.xml에 토글버튼을 하나 배치하고 MainActivity에서 이것에 대한 클릭 이벤트를 설정해보도록 하겠습니다. ■ 그래픽 레이아웃에서 토글버튼을 하나 배치해 보겠습니다. ■ 배치하고 아웃라인에서 설정을 해도 되지만 전 개인적으로 xml소스를 수정하는게 편해서요. 소스를 수정하는쪽으로 하겠습니다. ■ 위와 같이 수정을 했습니다. "id"는 [toggleButton1] 이구요. 세로크기는 안에 들어있는 내용만큼 으..
안드로이드 ArrayList / Random
안드로이드 ArrayList / Random ▣ 슈팅 게임 만들기 4 ■ 지금까지는 적의 등장과 움직임의 패턴만 만들어 봤는데요. 이것들을 효율적으로 적용시키는 방법에 대홰서 알아보겠습니다. 지난 포스팅에서 적을 만들고 GameState 클래스에서 적의 변수를 하나 만들어서 거기에 대입해가면서 테스트를 해봤습니다. 그런데 이런 방법으로 만들다보면 적이 수백개가 등장하는 이런 슈팅 게임에서 변수가 수백개가 되어야 할 것입니다. 이런 문제점을 해결해 주는것이 리스트 인데요. 자바에서 제공하는 ArrayList를 이용해서 관리하고, 등장하는 위치나 움직이는 패턴 등은 Random클래스를 이용해서 바꿔주도록 하겠습니다. ■ 먼저 GameState클래스를 살펴 보겠습니다. 지난번에 적을 만들어서 테스트를 해볼때 ..
안드로이드 게임 만들기
안드로이드 게임 만들기 ■ 지난번까지 해서 플레이어의 비행기와 배경까지 만들어 봤으니 이번에는 적을 만들어 보겠습니다. 슈팅 게임에서 적의 종류가 하나이면 재미가 없을테니까요 3가지 종류의 적을 만들겠습니다. 여러 적들의 슈퍼 클래스가 될 Enemy클래스를 작성하고, 애니메이션이 포함되어 있으니까 SpriteAnimation클래스를 상속 받겠습니다. ■ 적들은 어떤 특징이 있을까요? 먼저 미사일 한방에 죽는 적도 있겠고, 그렇지 않는 적도 있을겁니다. 때문에 hp변수가 필요하고 종류별로 이동 속도를 다를 수 있으니 speed변수도 필요할것입니다. 그리고 적의 행동을 보면 미사일을 발사하고 각자 움직이는 패턴이 다를 것입니다. 이런 내용들을 참고해서 변수를 선언하고 메서드를 만들겠습니다. ■ 적들이 상속받..