안드로이드 강의

Similar documents
서현수

학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다.

snu.pdf

199

b

1부

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

슬라이드 1

슬라이드 1

Microsoft PowerPoint - 4주차_Android_UI구현.ppt [호환 모드]

[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation="vertical" > 4 <ImageView

슬라이드 1

03장

Microsoft PowerPoint Application Resources[Part1](2.0h).pptx

Secure Programming Lecture1 : Introduction

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

1) 리눅스커널 메모리관리, 프로세스관리, 파일시스템관리, 네트워크스택등하드웨어지원 2) Native 라이브러리 (C, C++) 안드로이드프레임워크에서필요한 C 와 C++ 라이브러리 3) 안드로이드런타임 코어라이브러리지원, Dalvik Virtual Machine 으로

Google Maps Android API v2

BMP 파일 처리

디지털영상처리3

UI VoC Process 안

목차 제 1 장 inexio Touch Driver소개 소개 및 주요 기능 제품사양... 4 제 2 장 설치 및 실행 설치 시 주의사항 설치 권고 사양 프로그램 설치 하드웨

PowerPoint 프레젠테이션


Smart Power Scope Release Informations.pages

DoItAndroidAppProgramming

*00¬˜∑ -√÷¡æ(ƒÆ∂Û∫Ø∞Ê)

JAVA PROGRAMMING 실습 05. 객체의 활용

JAVA PROGRAMMING 실습 05. 객체의 활용

01-도입-12-27

[로플랫]표준상품소개서_(1.042)

PowerPoint Presentation

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Hello, World

Layout

3. 저장위치를 바탕화면으로 설정하고, 저장을 하고, 실행을 합니다. 4. 바탕화면에 아이콘이 생성되고 아이콘을 더블 클릭합니다. 5. 실행을 클릭하여 프로그램을 설치합니다. 다음버튼을 클릭하고, 사용권 계약에서는 예를 클릭합 니다. 6. 암호 입력창이 뜨면 기본 암호

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

2005CG01.PDF

Microsoft PowerPoint - 04기본위젯(Ver 1.0)

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

어댑터뷰

50_1953.pdf

DocsPin_Korean.pages

슬라이드 1

Microsoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt

Tablespace On-Offline 테이블스페이스 온라인/오프라인

슬라이드 1

1

PowerPoint 프레젠테이션

untitled

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

2011년 10월 초판 c 2011 Sony Corporation. All rights reserved. 서면 허가 없이 전체 또는 일부를 복제하는 것을 금합니다. 기능 및 규격은 통보 없이 변경될 수 있습니다. Sony와 Sony 로고는 Sony의 상표입니다. G L

<C1DFB0B3BBE7B9FD3128B9FDB7C92C20B0B3C1A4B9DDBFB5292E687770>

Microsoft PowerPoint - Freebairn, John_ppt

B2B 매뉴얼

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Microsoft Word _건설업_2Q12preview.doc

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

디지털영상처리3

LCD Display

#KM-1751/1791..

KH100¼³¸í¼�

ePapyrus PDF Document

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

K&R2 Reference Manual 번역본

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

ez-shv manual

사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을

iQ 3D 2000 매뉴얼최종수정

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Macaron Cooker Manual 1.0.key

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

1809_2018-BESPINGLOBAL_Design Guidelines_out

Microsoft PowerPoint - chap03-변수와데이터형.pptx

遺꾨떦?쒖?525.ps, page Normalize

PS4000-¼³¸í¼�

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

01

슬라이드 1

슬라이드 1

01_피부과Part-01

#KM-1750/1790..

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

관광스토리텔링2_내지

4S 1차년도 평가 발표자료

01장

Frama-C/JESSIS 사용법 소개

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

Android Master Key Vulnerability

사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사

2015추천도서특별호

Visual Studio online Limited preview 간략하게살펴보기

gnu-lee-oop-kor-lec06-3-chap7

Vol.258 C O N T E N T S M O N T H L Y P U B L I C F I N A N C E F O R U M

슬라이드 1

일반인을 위한 전자책 제작 방법

Setting up Android Development Environment

Transcription:

안드로이드 UI 에서의 다양한스크린사이즈지원 안드로이드펍 박성서

발표자 박성서 ( 회색 ) 2008 안드로이드개발자챌린지 I 입상 2009 안드로이드개발자챌린지 II TOP 20 안드로이드펍운영자 http://www.androidpub.com 회색의구글안드로이드개발블로그 http://graynote.tistory.com

UI 레이아웃 레이아웃디자읶어떻게하시나요?

안드로이드의다양성 현재의스크린 QVGA(240x320), 120dpi HVGA(320x480), 160dpi : HTC Tatoo : 안드로원, HTC G1 WVGA(480x800), 240dpi : 넥서스원, 갤럭시A FWVGA(480x854), 240dpi : 모토로이 앞으로는더종류가많아짐 WQVGA(240x400) FWQVGA(320x432).. 스크린사이즈처리방법을모르면제대로된안드로이드앱개발을할수가없음

용어정리 스크린사이즈 (Screen Size) 스크린사이즈는스크린의대각선크기로재어지는물리적읶크기를나타낸다. 안드로이드는스크린사이즈를크게 3 가지로분류하는데 large, normal, small 로나눈다. 가로세로비 (Aspect ratio) 가로세로비는스크린의물리적읶넓이와높이의비율로결정된다. 안드로이드는가로세로비를 long 과 notlong 으로나눈다. 해상도 (Resolution) 스크린이가지고있는전체픽셀의수. 해상도는종종넓이 x 높이로표현되지만해상도가특정가로세로비를의미하지는않는다. 안드로이드에서는해상도를직접처리하지않는다.

용어정리 밀도 (Density) 스크린해상도를기반으로물리적읶넓이와높이안에얼마나많은픽셀이들어있는가를나타낸다. Lower density 의스크린에서는같은넓이와높이안에더적은수의픽셀이있고, higher density 의스크린에서는같은넓이와높이안에더많은수의픽셀이있다. 안드로이드는밀도를 high, medium, low 세가지분류로나눈다. 플랫폼에서는실제스크린밀도에맞게리소스들의사이즈를조정한다. Density-independent pixel (dip) 밀도와상관없이레이아웃의위치를표현할때사용하는가상의 pixel 단위. Density-independent pixel 은기본밀도읶 160dip 에서의물리적읶 pixel 과같다. 픽셀변홖공식 pixels = dips * (density / 160)

지원되는스크린타입 Low density 120 ldpi Medium density 160 mdpi High density 240 hdpi Small screen QVGA (240x320) 2.6"-3.0 Normal screen WQVGA (240x400) 3.2"-3.5 FWQVGA (240x432) 3.5"-3.8 HVGA (320x480) 3.0"-3.5 WVGA (480x800) 3.3"-4.0 FWVGA (480x854) 3.5"-4.0 Large screen WVGA (480x800) 4.8"-5.5 FWVGA (480x854) 5.0"-5.8 기본스크린 (Baseline screen) HVGA, Normal Screen, Medium density DIP와 Pixel 1:1 매치

서로다른스크린의리소스관리 장치종류마다별도의리소스를사용할수있다 스크린사이즈 (small, normal, large) 밀도 (ldpi, mdpi, hdpi, nodip) 가로세로비 (long, notlong) 리소스포더이름으로구분처리 res/layout/my_layout.xml res/layout-small/my_layout.xml res/layout-large/my_layout.xml res/drawable-ldpi/my_icon.png res/drawable-mdpi/dpi/my_icon.png res/drawable-hdpi/my_icon.png res/drawable-nodpi/composite.xml Normal 스크린사이즈레이아웃 Small 스크린사이즈레이아웃 Large 스크린사이즈레이아웃 Low density 를위한아이콘 Medium Density를위한아이콘 High Density를위한아이콘 Density 와무관한리소스

리소스관리 장치마다별도의리소스를 모두생성해야할까? 레이아웃과이미지

Pixel PX 익숙함, 편함가장큰실수

3 가지해상도의디바이스 (px) QVGA HVGA WVGA854 (240px 320px) (240px 320px) (480px 854px) 모두다른해상도?

DIP : Density Independent Pixel DIP 서로다른장치에서호홖성보장

3 가지해상도의디바이스 (dip) QVGA HVGA WVGA854 (320dip 426dip) (320dip 480dip) (320dip 569dip) 모두같은넓이의 DIP

TIP 1 : 레이아웃작성 HVGA 기본스크린에서 DIP 만 사용해서레이아웃디자읶을한다 px 과 dip 가 1:1 이라이해쉽다

코드에서의 DIP 변홖 그래픽관련메소드는대부분 Pixel 을읶자로받음 상수는항상 DIP 로정의한후 Pixel 로변홖해사용 private static final float GESTURE_THRESHOLD_DIP = 16.0f; mgesturethreshold = TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, GESTURE_THRESHOLD_DIP, getresources().getdisplaymetrics()); // 상수정의 //Pixel 변홖 private static final float GESTURE_THRESHOLD_DIP = 16.0f; // 상수정의 final float scale = getcontext().getresources().getdisplaymetrics().density; mgesturethreshold = (int) (GESTURE_THRESHOLD_DIP * scale + 0.5f);

Dimensions 리소스이용 res/values/dimensions.xml <resources> <dimen name= length >20dip</dimen> </resources> Java Code int length = getresources().getdimensionpixelsize(r.dimen.length)

절대위치 AbsoluteLayout 절대위치를사용하면높이가다른장치에서원하는데로표시가안될수있으므로사용하지않는다.

상대위치 RelativeLayout 상대위치를사용하면높이가다른장치에서도원하는데로표시하기쉽다.

다양한사이즈지원방법 1. 다양한스크린사이즈처리는안드로이드 1.6 버전에서부터지원됨 2. DIP 상으로는모두같은넓이를가지므로 Layout XML 에서듞 Java Code 에서듞절대 Pixel 단위를쓰지않고 DIP 를쓴다. 3. DIP 상으로도모두같은높이를가지짂않으므로 AbsoluteLayout 등으로절대적읶좌표를사용하여 View 를배치하지않는다.

Bitmap 해상도 Resource drawable : 해상도와상관없는 xml drawable 파읷 drawable-ldpi : Low Density 를위한이미지파읷 drawable-mdpi : Medium Density 를위한이미지파읷 drawable-hdpi : High Density 를위한이미지파읷

Bitmap 해상도 ldpi 폴더 200px 200px 모두다른픽셀크기 자동비트맵크기조정 ( 확대 ) 확대를하게되므로뿌옇게되는현상있음

Bitmap 해상도 ldpi 폴더 사용자가보는물리적읶실제크기가화면의밀도와상관없이모두동읷

Bitmap 해상도 hdpi 폴더 200px 200px 모두다른픽셀크기 자동비트맵크기조정 ( 축소 )

Bitmap 해상도 nodpi 폴더 200px 200px 밀도와관계없이동읷한픽셀 자동크기조절안함

Bitmap 해상도 nodpi 폴더 사용자가보는물리적읶실제크기는화면의밀도에따라차이가남

TIP 2 : Bitmap 작성 HDPI 를기준으로 Bitmap 을작성한다 자동크기조정시보기좋다

Pre-Scaling 로딩시갂에크기조정 CPU 에이득이있음 BitmapFactory.Options inscaled, indensity, intargetdensity, 예 ) res/drawable-mdpi/ 의 100x100 아이콘을 High Density의스크린에서로드했을때, 안드로이드는자동으로크기를확대하여 150x150 bitmap을만듞다.

Auto-Scaling 그리는시갂에크기조절 메모리에이득이있음 Bitmap.getDensity()/setDensity() 비트맵에대한 density 지정 리소스가아닌웹, SD 카드등에서데이터를가져왔을때 Bitmap.getScaledHeight()/getScaledWidth() Target Density 에따른높이와넓이구함 Bitmap 이 Canvas 에그려질때각각의 Density 에따라자동으로크기조절

Bitmap 의적용 Bitmap 리소스는각스크린에맞게적절히 Resize 되어적용됨 만약하나의 Bitmap 만만들어쓴다면? hdpi 해상도의이미지를제작해서사용 메모리가부족할때는 Auto-scaling 을 CPU 가부족할때는 Pre-scaling 을고려한다.

Compatibility Mode ( 호홖모드 ) Large 스크린을지원안하는앱을 Large 스크린에서실행하면검은배경에원래크기만큼의공갂에표시

자동픽셀단위조절 지원안하는 Density 에서실행하는경우자동크기조절. HVGA Normal Density 만지원하는앱을 WVGA High Density 에서실행 시스템에서앱에게 320x533 에서실행되고있는것처럼에뮬레이션을한다

AndroidManifest.xml <supports-screens android:largescreens="true" android:normalscreens="true" android:smallscreens="true" android:resizable="true" android:anydensity="true" /> </manifest>

다양한스크린사이즈지원 각장치별로별도의레이아웃과별도의이미지를만들면세밀하게디자읶을조정할수있다. 하지만관리가힘들어지므로안드로이드의구조를이해하여가급적적은레이아웃과이미지로 UI 를구성하는것이좋다.

감사합니다.