학습내용 01. 안드로이드 개요 및 개발 환경 구축 안드로이드의 개념과 특징을 이해한다. 안드로이드 개발 환경을 설치한다. 안드로이드 개발 환경을 알아본다. 한국방송통신대학교 컴퓨터과학과 4학년 모바일앱프로그래밍 김 룡 kimryongtutor@knou.ac.kr Page 2 1. 안드로이드 개요 스마트폰 개요 1. 안드로이드 개요 스마트폰 운영체제 통화기능을 넘어선 컴퓨터의 역할 + 휴대기기 장점과 특징 스마트폰 역사 1992년 IBM사의 사이먼 (최초) 1996년 노키아 9000 2002년 마이크로소프트 포켓PC 2007년 애플 아이폰 2008년 구글 안드로이드 폰 2010년 윈도폰7 2015년 8월 구글 안드로이드 6.0 2016년 3월 애플 ios 9.3 Page 3 2014년 기준 세계시장 점유율 안드로이드 스마트폰 약 85%, 아이폰 약 12%, 윈도폰 약 3% Page 4
1. 안드로이드 개요 안드로이드 역사 (1/2) 1. 안드로이드 개요 안드로이드 역사 (2/2) Page 5 마시멜로우 6.0 2015년 8월 지문인식, 결제, 자동백업, 앱링크 공식 개발툴로 안드로이드 스튜디오 확정 Page 6 1. 안드로이드 개요 안드로이드 개발툴 이클립스 각 배포판의 이름은 초기에는 목성의 4대 위성 이름으로 결정되었고 최 근에는 투표를 통해 결정한다. 1. 안드로이드 개요 안드로이드의 주요 기능 애플리케이션 프레임워크를 통해서 제공되는 API를 사용함으로써 코드를 재사용하여 효율적이고 빠른 애플리케이션 개발 가능 모바일 기기에 최적화된 달빅(Dalvik) 또는 아트(ART:Android Run Time)제공 2D 그래픽 및 3차원 그래픽을 최적화하여 표현 모바일용 데이터베이스인 SQLite를 제공 각종 오디오, 비디오 및 이미지 형식을 지원 모바일 기기에 내장된 각종 하드웨어(블루투스, 카메라, 나침반, WiFi 등) 지원 이클립스 IDE 또는 Android Studio를 통해 강력하고 빠른 개발환경 제공 롤리팝(5.0)부터는 다양한 안드로이드 기기를 통합 지원 Page 7 Page 8
1. 안드로이드 개요 안드로이드의 특징 1. 안드로이드 개요 안드로이드 운영체제의 구조 안드로이드의 핵심 커널은 리눅스(Linux)로 구성되어 있다. 단, 리눅스 사용법을 전혀 몰라도 안드로이드 애플리케이션을 작성에 문제가 없다. 안드로이드 애플리케이션 개발 언어는 Java 언어를 사용한다. 고 수준의 애플리케이션을 제작하기 위한 NDK는 C, C++ 기반으로 개발한다. 안드로이드 SDK에서 많은 라이브러리를 포함하고 있어 개발을 용이하게할수있다. 오픈 소스를 지향하기 때문에 운영체제부터 관련 문서, 개발 도구등거의모든것을무료로사용할수있다. 지속적인 업그레이드를 제공한다. Page 9 Page 10 1. 안드로이드 개요 안드로이드 운영체제의 구조 응용프로그램(Applications) 안드로이드 스마트폰에서 사용할 수 있는 일반적인 응용 프로그램 웹 브라우저, 달력, 구글맵, 연락처, 게임 등 사용자 입장에서 가장 많이 사용 Java로 제작됨 응용프로그램 프레임워크(Application Framework) 안드로이드 API가 존재하는 곳 안드로이드폰 하드웨어에 접근할 때는 Java에 직접 접근하는 것이 아니라 API를 통해서 가능 1. 안드로이드 개요 안드로이드 운영체제의 구조 안드로이드 런타임(Android Runtime) Java 코어 라이브러리와 달빅 가상머신(Dalvik Virtual Machine) 또는 아트 런타임(ART Runtime)으로 구성 라이브러리(Libraries) 안드로이드에서 사용되는 여러 시스템 라이브러리는 시스템 접근때문에 Java가 아닌 C로 작성 리눅스 커널(Linux Kernel) 하드웨어의 운영과 관련된 저수준의 관리 기능들이 들어 있음 주로 메모리 관리, 디바이스 드라이버 보안 등 Page 11 Page 12
2. 안드로이드 개발 환경 개요 개발 운영체제 2. 안드로이드 개발 환경 개요 개발 환경구성 Windows, Linux, Mac 모두를 지원함 Windows는 32bit, 64bit 관계없이 개발할 수 있음 안드로이드 개발을 위한 Windows 운영체제 PC용 Windows XP, Windows Vista, Windows 7, Windows 8 서버용 Windows Server 2003, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012 Windows 서비스팩 설치여부와 관계 없음 Linux용 개발 환경 지원 개발환경 구성이 완료되면 Android Studio를 실행해서 코딩과 수정을 통해 앱을 개발 코딩된 결과는 AVD에 출력하고, 개발자는 그 결과를 확인 Page 13 Page 14 3. 안드로이드 개발 환경 구축 개발 환경 구축 순서 기출문제 마시멜로우 6.0 공식 개발툴로 안드로이드 스튜디오 확정 JDK 다운로드(http://java.oracle.com) 및 설치. JRE도 설치함. JavaFX는 설치하 지않음. 안드로이드 SDK 다운로드 (http://developer.android.com/sdk) 이클립스 다운로드 (http://www.eclipse.org/downloads/pack ages/release/indigo/sr2) 메뉴의 [Help] > [Install Software] 선 택 Location : http://dlssl.google.com/android/eclipse Page 15 구글이만든가상머신으로리눅스 커널의 최상위 영역에서 동작하며 자바 가상 머신과 같은 역할을 하는 것은 무엇인가? 달빅(Dalvik) 다음 중 안드로이드 폰에 관한 설명으로 틀린 것은? 1. 자바 언어를 사용하여 앱을 개발한다. 2. 달빅 가상 머신을 사용하여 앱을 실행한다. 3..dex 포맷의 실행 코드를 갖는다. 4. AirDrop 기능을 제공한다. 개발자들이 안드로이드 개발을 손쉽게 하도록 접근을 허용하는 응용 프로그램 개발을 위한 함수의 집합은 무엇인가? 안드로이드 API 애플리케이션을 실행하거나 윈도우를 나타내기 위한 라이브러리의 총칭으로 애플리케이션이 하위의 커널이나 라이브러리를 호출하기 위한 API를 제공하는 부분은? 애플리케이션 프레임워크 안드로이드 개발 라이브러리, 도움말 문서, 개발 보조 도구 등을 포함하는 것은? SDK Page 16
학습목표 02. 처음으로 만드는 안드로이드 응용 프로그램 안드로이드 응용 프로그램의 기본적인 작성법을 익힌다. AVD의 명칭을 배운다. 안드로이드 프로젝트의 구성을 파악한다. 한국방송통신대학교 컴퓨터과학과 4학년 모바일앱프로그래밍 김 룡 kimryongtutor@knou.ac.kr Page 18 1. 처음 만드는 [Hello Android] 프로그램 1. 처음 만드는 [Hello Android] 프로그램 이클립스 메뉴 [File]-[New]-[Project]를 선택한 후 [New Project] 창에서 [Android]를 확장한 후 [Android Application Project]를 선택 Page 19 Page 20
1. 처음 만드는 [Hello Android] 프로그램 [New Android Application] 창 설정 1. 처음 만드는 [Hello Android] 프로그램 [Configuration Launcher Icon]창은 디폴트 [Create Activity] 창도 디폴트 [New Blank Activity] 창 설정 동작가능 최고 사양 동작가능 최저 사양 Page 21 Page 22 1. 처음 만드는 [Hello Android] 프로그램 화면 디자인과 XML 코드 1. 처음 만드는 [Hello Android] 프로그램 Java 코드 Page 23 Page 24
1. 처음 만드는 [Hello Android] 프로그램 프로젝트 실행 1. 처음 만드는 [Hello Android] 프로그램 실행 결과 AVD 처음 실행 후 기다려야 함. AVD 처음 실행은 휴대전화의 전원을 처음켠것과같음. Page 25 Page 26 생명 주기 (Life Cycle) 기출문제 시작 onrestart 포그라운드가 될때 포그라운드가 될때 oncreate onstart onresume 실행 보이지않게될때 onstop 다른 액티비티가 앞에 올 때 onpause 강제종료 Back키로 액티비티로 돌아왔을 때 메모리가 부족할 때 액티비티의 시작, 실행, 활성, 비활성화, 정지, 종료되는 일련의 상태 순환을 의미하는 것은 무엇인가? 생명주기 액티비티가 포커스는 잃었지만, 사용자에게는 보이는 상태로 위쪽에 다른 액티비티가 있지만 화면 전체를 다 가리지 않았거나 반투명한 경우는 무엇인가? 일시정지 상태 다른 액티비티에 의해 완전히 가려진 상태이며 사용자 눈에 보이지는 않으며, 모든 정보를 다 유지하고 있으므로 언제든지 다시 활성화될 수 있는 액티비티 상태는 무엇인가? 정지 상태 액티비티를 초기화하며, 중지했다가 재시작하는 경우라면 액티비티의 이전 상태 정보인 Bundle이 전달된다. 이 정보대로 재초기화한다. oncreate() ondestroy 종료 Page 27 Page 28
2. AVD 명칭과 사용법 AVD 명칭 2. AVD 명칭과 사용법 AVD 사용법 초기화면과 가로화면 Ctrl + F11 Page 29 Page 30 3. 완전한 응용 프로그램 작성 이클립스 프로젝트 관리 프로젝트 닫기와 열기 / 프로젝트 제거하기 3. 완전한 응용 프로그램 작성 이클립스 프로젝트 관리 제거한 프로젝트 다시 불러오기 (메뉴 [File] [Import]) 체크하면 프로젝트 전체 삭제 됨 체크안하면 이클립스에서 프로젝트 제거 Page 31 Page 32
3. 완전한 응용 프로그램 작성 이클립스 프로젝트 관리 Export로 프로젝트 내보내기 (메뉴 [File] [Export]) 3. 완전한 응용 프로그램 작성 이클립스 프로젝트 관리 내보낸 프로젝트 불러오기 (메뉴 [File] [Import]) Page 33 Page 34 3. 완전한 응용 프로그램 작성 프로젝트의 표준 틀 애플리케이션 정보 입력 3. 완전한 응용 프로그램 작성 프로젝트의 표준 틀 액티비티 정보 입력 응용프로그램 이름 프로젝트 이름 액티비티 이름 프로젝트이름+Activity 로 고정시킬 것 패키지 이름 (com.cookandroid.프로젝트이름) 앱의 SDK 버전과 앱이 실행되는 최소 SDK 버전 메인 레이아웃 XML 이름 main 으로 고정시킬 것 앱 타이틀 프로젝트 이름 Page 35 Page 36
3. 완전한 응용 프로그램 작성 프로젝트의 표준 틀 화면 디자인 3. 완전한 응용 프로그램 작성 프로젝트의 표준 틀 버튼을 추가한 main.xml Page 37 Page 38 3. 완전한 응용 프로그램 작성 프로젝트의 표준 틀 string.xml 편집 4. 프로젝트의 구성 BaseApp 프로젝트의 구성 프로젝트 구성 strings.xml : hello 문자열 정의 main.xml : 정의된 문자열을 Linear Layout의 Text View에 넣는다 AndroidFirst.java : setcontentview 메서드 호출, 레이아웃을 액티비티에 배치 R.java : 각 파일들이 참조하는 객체의 ID 정의 AndroidFirst.java 액티비티 생성 R.layout.main 레이 아웃 배치 main.xml LinearLayout TextView @string/hello Page 39 R.java main, hello 등의 명 칭정의 strings.xml Hello = Hello World, AndroidFirst Page 40
4. 프로젝트의 구성 BaseApp 프로젝트의 구성 4. 프로젝트의 구성 프로젝트 폴더와 파일의 용도 src 폴더 패키지 이름 아래에 "패키지명+Activity.java"로 메인 Java 소스가 들어 있다. gen 폴더 R.java 파일이 자동으로 생성되는데, 수정하면 절대 안 된다. Google APIs [Android 4.0.3] 폴더 프로젝트의 해당 플랫폼 라이브러리가 들어 있다. Page 41 Page 42 4. 프로젝트의 구성 프로젝트 폴더와 파일의 용도 assets 폴더 배포할 때 함께 포함시킬 파일을 넣는 용도로 주로 소리, 동영상 등을 넣는다. bin 폴더 관련 소스들이 컴파일 되어 저장되는 폴더다. 프로젝트이름.apk 파일에 소스 및 리소스가 컴파일된 후 압축되어 들어간다. 4. 프로젝트의 구성 프로젝트 폴더와 파일의 용도 res 폴더 앱 개발에 사용되는 이미지, 레이아웃, 문자열 등이 들어가는 폴더다. 이미지 파일은 drawable 폴더에 넣으면 된다. layout 폴더는 액티비티(화면)을 구성하는 xml 파일을 넣으면 된다. values 폴더는 문자열을 저장하는 string.xml이 들어 있다. menu 폴더는 메뉴 XML 파일이 저장되어 있다. libs 폴더 SDK 관련 라이브러리 폴더다. Page 43 Page 44
4. 프로젝트의 구성 프로젝트 폴더와 파일의 용도 기출문제 AndroidManifest.xml 파일 앱의 여러 가지 정보를 담고 있는 중요한 파일로,'매니페스트 파일'이라고 읽으면 된다. proguard.cfg 파일 앱을 최적화하기 위한 정보가 자동으로 들어 가는 파일이다 project.properties 파일 프로젝트를 빌드(Build)할 때의 플랫폼 버전이 지정된다. Page 45 프로젝트의 버전이나 이름, 구성, 어플리케이션의 주요 속성을 정의한 XML 파일은 무엇인가? AndroidManifest.xml 안드로이드 프로그래밍 개발 환경에서 문자열을 정의한 XML 파일은 무엇인가? String.xml 홈 스크린에 표시된 아이콘 이미지들이 저장되는 폴더는 무엇인가? res\drawable\ res 폴더 drawalbe 폴더 R.java 파일에 대한 설명으로 옳지 않은 것은? 1. 개발자는 이 파일을 자유롭게 변경할 수 있다.(수정안함) 2. R 클래스나 내부의 정수 정의는 개발툴에 의해 자동적으로 작성된다. 3. XML 파일에서 참조하는 리소드의 ID는 R.java 파일에 정의된다. 4. 클래스의 디폴트필드인 R.layout.main은 Activity Class의 setcontentview 가 인수로 사용된다. Page 46 03. 기본 위젯 익히기 학습목표 뷰와 뷰 상속을 이해한다. 기본 위젯을 다루는 방법을 익힌다. 안드로이드 앱의 기본적인 프로그래밍을 숙달한다. 한국방송통신대학교 컴퓨터과학과 4학년 모바일앱프로그래밍 김 룡 kimryongtutor@knou.ac.kr Page 48
1. 뷰의 개요 뷰 클래스 계층도 1. 뷰의 개요 뷰 클래스 안드로이드 화면에서 실제로 사용되는 것은 모두 View 클래스에서 상속 이러한 클래스를 모두 '위젯' (또는 뷰)이라고도 부름. 위젯 중에서 다른 위젯을 담을 수 있는 것들은 주로 ViewGroup 클래스의 하위에 존재한다. 이렇게다른위젯을담을 수있는클래스를 레이아웃이라고 함. Page 49 Page 50 기출문제 View 그룹의 특징으로 틀린 것은 무엇인가? 1. 직접적으로 보이지 않으며 다른 View를 담는 그릇 역할을 한다. 2. 사용자 인터페이스를 구성하며 버튼, 텍스트 View, 에디트, 라디오 버튼 등이다. 3. 여러 개의 View를 유기적으로 모아 놓은 것이다. 4. View 그룹과 같은 클래스들을 레이아웃이라고 한다. 위젯에 대한 설명은 무엇인가? View로부터 직접적으로 파생되고, 직접적으로 보이며 사용자 인터페이스를 구성한다. 안드로이드 응용 프로그램의 화면을 구성하는 주요 단위는 무엇인가? 액티비티(Activity) 1. 뷰의 개요 View 클래스의 XML 속성 위젯과 레이아웃 등은 모두 View 클래스의 속성과 메소드를 상속받는다. 버튼의 예 Page 51 Page 52
1. 뷰의 개요 View 클래스의 XML 속성 id 속성 id속성은 모든 위젯의 아이디를 나타냄 Java 코드에서 버튼 등의 위젯에 접근할 때 id속성에 지정한 아이디를 사용 android:id="@+id/btn1"의 의미는 버튼 위젯의 아이디를 btn1으로 부여한 것 @ : id를 리소스에 정의하거나 참조한다 + : ID를 새로 정의한다 / : 뒤에 원하는 이름을 작성한다 1. 뷰의 개요 View 클래스의 XML 속성 id 속성 예제 Page 53 Page 54 1. 뷰의 개요 View 클래스의 XML 속성 1. 뷰의 개요 View 클래스의 XML 속성 layout_width, layout_height 속성 match_parent(=fill_parent) : 자신의 부모(대게는 레이아웃)에 폭이나 높이를 맞춘다는 의미 wrap_content : 자신의 폭이나 높이를 자신 안의 글자가 꼭 들어갈 정도로 설정 Page 55 Page 56
1. 뷰의 개요 View 클래스의 XML 속성 1. 뷰의 개요 View 클래스의 XML 속성 layout_width, layout_height 속성 Page 57 Page 58 1. 뷰의 개요 View 클래스의 XML 속성 background 속성 위젯의 색상을 주로 #RRGGBB 값으로 지정 1. 뷰의 개요 View 클래스의 XML 속성 padding 속성 padding은 위젯의 경계선으로부터 위젯 안의 내용물이 좀 떨어지도록 설정. 내부 여백, 크기에 포함. Page 59 Page 60
1. 뷰의 개요 View 클래스의 XML 속성 layout_margin 속성 위젯과 위젯 사이를 여유있게 하고 싶다면 layout_margin속성을 사용. 외부 여백, 크기에 포함 안됨. 기출문제 다음의 그림에서 (가)와 (나)에 해당하는 내용으로 알맞은 것은? (가) padding (나) layout_margin 뷰와 내용물간의 간격을 지정하는 속성은 무엇인가? 패딩 패딩과 마진에 대한 설명으로 틀린 것은? 1. 뷰의 입장에서 볼 때 패딩은 바깥 여백이고 마진은 안쪽 여백이 된다. 2. 패딩은 뷰 자체의 속성이지만 마진은 레이아웃의 속성이다. 3. 패딩은 뷰의 내부이므로 크기에 포함되지만 마진은 포함되지 않는다. 4. 마진은 뷰와 부모 사이에 적용되며 패딩은 뷰와 내용물 사이에 적용된다. 5. 마진은 뷰의 크기에 포함된다. Page 61 Page 62 1. 뷰의 개요 View 클래스의 XML 속성 visibility 속성 위젯을 보일 것인지 여부를 결정하는 속성 visible은 보이는 상태, invisible과 gone은 안 보임. 1. 뷰의 개요 View 클래스의 XML 속성 enabled, clickable 속성 enabled : 위젯의 동작 여부 clickable : 클릭이나 터치가 가능하도록 함 Page 63 Page 64
2. 기본 위젯 다루기 텍스트뷰 계층도 2. 기본 위젯 다루기 텍스트뷰 텍스트뷰 예제 관련 속성 textcolor 속성 : 글자의 색상을 지정. #RRGGBB나 #AARRGGBB 형식 textsize 속성 : 글자의 크기를 dp, px, in, mm, sp 단위로 지정 typeface 속성 : 글자의 글꼴을 지정. 값으로 sans, serif, monospace 설정, 디폴트는 normal textstyle 속성 : 글자의 스타일을 지정. 값으로 bold, italic, bold italic을 설정, 디폴트는 normal singleline 속성 : 글이 길어 줄이 넘어갈 경우 강제로 한 줄만 출력. 값으로 true와 false를 설정할 수 있으며 디폴트는 false Page 65 Page 66 2. 기본 위젯 다루기 버튼과 에디트텍스트 텍스트뷰와 버튼의 호환 2. 기본 위젯 다루기 버튼과 에디트텍스트 버튼 계층도 버튼 XML과 Java 코드 작성 3단계 Page 67 Page 68
2. 기본 위젯 다루기 버튼과 에디트텍스트 에디트텍스트 계층도 에디트텍스트 XML과 Java 코드 작성 3단계 기출문제 뷰의 속성으로 뷰의 표시 유무를 지정하는 속성은 무엇인가? visibility 텍스트뷰의 속성으로 텍스트가 위젯의 폭보다 더 길 때 강제로 한 줄에 출력하도록 하는 속성은 무엇인가? singleline TextView의 서브 클래스이므로 TextView의 모든 속성을 사용 할 수 있으며 추가로 사용자로부터 텍스트를 입력받기에 가장 적합한 것은 무엇인가? EditText TextView의 서브 클래스이므로 TextView의 모든 속성을 사용할 수 있으며 사각 모양으로 사용자의 의사 TextView에서 폰트의 속성을 지정하며, 결정을 입력 받기에 가장 적합한 것은 normal, bold, italic 중 하나를 쓰거나무엇인가? 아니면 로 묶어 두 개 이상의 Button 상수값을 지정할 수 있는 속성은 무엇인가? textstyle Page 69 Page 70 기출문제 다음과 같이 layout_gravity의 속성을 지정하였을 경우 출력 결과는? 다음과 같이 gravity 속성을 center 로 지정했을 경우 출력 결과는? 2. 기본 위젯 다루기 두정수를입력한후에각버튼을누르면제일아래에 계산결과가 나오는 아주 간단한 계산기 v v Page 71 Page 72
2. 기본 위젯 다루기 3. 기본 위젯 활용하기 컴파운드버튼 화면 디자인 : EditText 2개, Button 4개, TextView 1개 컴파운드버튼 계층도 체크박스 XML과 Java 코드 작성 3단계 Page 73 Page 74 3. 기본 위젯 활용하기 컴파운드버튼 스위치, 토글버튼, 라디오버튼, 라디오그룹 3. 기본 위젯 활용하기 이미지뷰와 이미지버튼 계층도 XML 코드 Page 75 이미지를 사용하려면 먼저 그림파 일을 [res]-[drawable] 폴더에 복 사해 놓아야 하는데, 파일 포맷은 png, jpg, gif를 지원하며 주로 png나 jpg를 사용할 것을 권장한다. Page 76
3. 기본 위젯 활용하기 <시작함>를 체크하면, 좋아하는 애완동물 세 가지 중에서 하나를 선택하는 내용이 나온다. 선택 후에 <선택 완료> 버튼을 클릭하면 해당 애완동물의 이미지가 나타난다 3. 기본 위젯 활용하기 프로젝트의 [res]-[drawble-hdpi] 폴더에 강아지, 고양이, 토끼 그림파일을 미리 복사한다. Page 77 Page 78 3. 기본 위젯 활용하기 화면 디자인 TextView, CheckBox, TextView, RadioGroup, RadioButton 세 개, Button, ImageView의 차례로 만듬 제일 위의 TextView와 CheckBox를 제외하고, 나머지 위젯은 visibility 속성을 invisible로 지정 각 위젯의 id는 위에서부터 Text1, ChkAgree, Text2, Rgroup1, RdoDog, RdoCat, RdoRabbit, BtnOK, ImgPet 로 함 04. 레이아웃 익히기 한국방송통신대학교 컴퓨터과학과 4학년 모바일앱프로그래밍 김 룡 kimryongtutor@knou.ac.kr Page 79
학습목표 레이아웃의 개념을 익힌다. 화면을 다양한 레이아웃으로 구성한다. 1. 레이아웃 개요 레이아웃 기본 개념 레이아웃 계층도 레이아웃은 레이아웃 자체를 보이기 보다는, 레이아웃 안에 존재하는위젯을배치하기위한용도가더주요한목적 레이아웃 중에서 가장 많이 사용되는 것은 리니어레이아웃 Page 81 Page 82 1. 레이아웃 개요 레이아웃의 종류 1. 레이아웃 개요 레이아웃 기본 개념 레이아웃의 기본 형태 리니어 레이아웃 : 왼쪽 위부터 아래쪽 또는 오른쪽으로 차례로 배치 렐러티브 레이아웃 : 위젯 자신이 속한 레이아웃의 상하좌우의 위치를 지정하여 배치 테이블 레이아웃 : 위젯을 행과 열의 개수를 지정한 테이블 형태로 배열 그리드 레이아웃 : 테이블레이아웃과 비슷하지만, 행 또는 열을 확장하여 다양하게 배치할 때 더 편리 프레임 레이아웃 : 위젯들을 왼쪽 위에 일률적으로 겹쳐서 배치하여 중복해서 보이는 효과를 냄 Page 83 레이아웃의 대표적인 속성 orientation : 레이아웃 안에 배치될 위젯의 수직 또는 수평방향을 설정 gravity : 레이아웃 안에 배치될 위젯을 좌측, 우측, 중앙 등 정렬할 방향을 설정 padding : 레이아웃 안에 배치될 위젯의 여백을 설정 layout_weight : 레이아웃이 전체 화면에서 차지하는 공간의 가중 값을 설정하는데, 여러 개의 레이아웃이 중복될 때 주로 사용 baselinealigned : 레이아웃 안에 배치할 위젯들을 보기 좋게 정렬 Page 84
2. 리니어레이아웃 기본 리니어레이아웃 형태 orientation 속성과 예제 vertical은 수직 배열 horizontal은 수평배열 2. 리니어레이아웃 기본 리니어레이아웃 형태 gravity 속성 gravity 속성은 레이아웃 안의 위젯들을 어디에 배치할 것인지를 결정 Page 85 Page 86 2. 리니어레이아웃 기본 리니어레이아웃 형태 layout_gravity 속성 layout_gravity는 자신의 위치를 부모(주로 레이아웃)의 어디쯤에 위치할 것인지를 결정 2. 리니어레이아웃 기본 리니어레이아웃 형태 baselinealigned 속성 크기가 다른 위젯들의 정렬을 보기 좋게 설정 디폴트 값은 "true" Page 87 Page 88
2. 리니어레이아웃 중복 리니어레이아웃 형태 중복 리니어레이아웃 기본 형태 2. 리니어레이아웃 중복 리니어레이아웃 형태 layout_weight 속성 리니어레이아웃을 여러 개 사용하면, 각 레이아웃의 크기를 지정 대개 각 레이아웃을 전체 화면에서 몇 %로 지정하는 것이 일반적 Page 89 Page 90 2. 리니어레이아웃 중복 리니어레이아웃 형태 예제1-오류 2. 리니어레이아웃 중복 리니어레이아웃 형태 예제 2(오류)와 예제 3(정상) Page 91 Page 92
3. 기타 레이아웃 렐러티브레이아웃 3. 기타 레이아웃 렐러티브레이아웃 개념 렐러티브레이아웃(RelativeLayout)은 상대레이아웃이라고도 부르는데, 이름처럼 레이아웃 내부에 포함된 위젯들을 상대적인 위치로 배치 렐러티브레이아웃의 상하좌우에 배치 Page 93 Page 94 3. 기타 레이아웃 렐러티브레이아웃 3. 기타 레이아웃 렐러티브레이아웃 다른 위젯의 상대위치에 배치 각속성의값은다른위젯의id를지정, @+id/기준위젯_아이디 형식으로 사용 Page 95 Page 96
3. 기타 레이아웃 테이블레이아웃 개요 표 형태로 위젯을 배치할 때 주로 사용 <TableRow>와 함께 사용되는데, <TableRow>의 개수가 바로 행의 개수가 된다. 열의 개수는 <TableRow>안에 포함된 위젯의 개수가 열의 개수로 결정된다. 3행 4열의 테이블레이아웃은 다음과 같다. 3. 기타 레이아웃 테이블레이아웃 속성 layout_span : 열을 합쳐서 표시하라는 의미 layout_column : 지정된 열에 현재 위젯을 표시하라는 의미 열번호는 0번부터 시작 Page 97 Page 98 3. 기타 레이아웃 테이블레이아웃 초간단계산기를좀더개선시켜서, 테이블레이아웃을활용하여 숫자버튼까지 있는 계산기를 만들자. 3. 기타 레이아웃 테이블레이아웃 화면 디자인 Page 99 Page 100
3. 기타 레이아웃 그리드레이아웃 개요 테이블레이아웃에서는 좀 어려웠던 행을 확장하는 기능도 간단하게 할 수 있어서 유연한 화면 구성에 적합 행, 열을 지정하는 것은 상당히 직관적 3. 기타 레이아웃 그리드레이아웃 속성 <GridLayout> 자체에 자주 사용되는 속성 rowcount : 행 개수 columncount : 열 개수 orientation : 수평방향/수직방향 중 어디를 우선할 것인지를 결정 그리드레이아웃 안에 포함될 위젯에서 사용되는 속성 layout_row : 자신이 위치할 행 번호 (0번부터 카운트) layout_column : 자신이 위치할 열 번호 (0번부터 카운트) layout_rowspan : 지정된 개수만큼 행을 확장 layout_columnspan : 지정된 개수만큼 열을 확장 layout_gravity : 위젯을 확장된 셀에 꽉 채우는 효과 Page 101 Page 102 3. 기타 레이아웃 그리드레이아웃 예제 3. 기타 레이아웃 프레임레이아웃 개요 단순히 레이아웃 내의 위젯들은 왼쪽 상단부터 겹쳐서 출력함 프레임레이아웃 그 자체를 사용하기 보다는 탭 위젯 등과 혼용해서 사용할 때 유용함 Page 103 Page 104
기출문제 차이드 View를 일렬로 배치하며 XML 문서에 나타나는 순서대로 View가 배치되는 레이아웃은 무엇인가? LinearLayout LinearLayout에서 차이드 뷰를 일렬로 배치하는 방법으로 수평/수직을 지정하는 속성은 무엇인가? orientation 이름 그대로 관계나 순서에 상관없이 지정한 절대 좌표에 차일드 뷰를 배치하는 레이아웃은 무엇인가? AbsoluteLayout 위젯과부모와의위치관계또는 위젯끼리의 관계를 지정함으로써 View를 배치하는 레이아웃으로 서로간의 위치 관계를 지정하는 레이아웃은 무엇인가? RelativeLayout 차일드를 배치하는 규칙이 따로 없고 모든 차일드는 프레임의 좌상단에 나타나며, 차일드가 두 개 이상일 때는 추가된 순서대로 겹쳐서 표시되는 레이아웃은 무엇인가? FrameLayout Page 105 05. 토스트와 대화상자 한국방송통신대학교 컴퓨터과학과 4학년 모바일앱프로그래밍 김 룡 kimryongtutor@knou.ac.kr 1. 토스트 2. 대화상자 기본 대화상자 토스트 개요 화면에 잠깐 나타났다 사라지는 메시지 사용자가 인식해야 할 작은 메시지를 줄 때 편리 프로그래머가 디버깅 용도로 사용하기에도 적당 화면에 메시지를 보낸 후, 확인/취소 등의 사용자 선택을 받음 일반적인 사용 방법 일반적인 형태 토스트의 위치 변경 Page 107 Page 108
기출문제 Toast 객체에 대한 설명으로 옳은 것은? 1. 시스템 차원에서 제공되는 작은 팝업 대화상자이다. 2. 디버깅용으로 사용할 수 없다. 3. 일정 시간이 지나도 사라지지 않는다. 4. 플로팅 형태로 화면 중앙에 고정되어 나타난다. Page 109