blob: dfaa44f33abc7468676f2b15ac69a3a5594bcb7a [file] [log] [blame]
page.title=다양한 화면 밀도 지원
parent.title=다양한 화면 지원
parent.link=index.html
trainingnavtop=true
previous.title=다양한 화면 크기 지원
previous.link=screensizes.html
next.title=조정형 UI 플로우 구현
next.link=adaptui.html
@jd:body
<!-- This is the training bar -->
<div id="tb-wrapper">
<div id="tb">
<h2>강의 목표</h2>
<ol>
<li><a href="#TaskUseDP">DIP(Density Independent Pixel) 사용</a></li>
<li><a href="#TaskProvideAltBmp">대체 비트맵 제공</a></li>
</ol>
<h2>참고자료</h2>
<ul>
<li><a href="{@docRoot}guide/practices/screens_support.html">여러 화면 지원</a></li>
<li><a href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">아이콘 디자인 가이드라인</a></li>
</ul>
<h2>다운로드 </h2>
<div class="download-box">
<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">샘플 다운로드</a>
<p class="filename">NewsReader.zip</p>
</div>
</div>
</div>
<p> 강의에서는 다양한 리소스를 제공하고 해상도 독립형(resolution-independent) 측정 단위를 사용함으로써 다양한 화면 밀도를 지원하는 방법을 설명합니다.</p>
<h2 id="TaskUseDP">DIP(Density Independent Pixel) 사용</h2>
<p>레이아웃을 디자인할 범하기 쉬운 실수 하나는 절대 픽셀(absolute pixel)을 사용하여 거리나 크기를 정의하는 것입니다. 화면은 픽셀 밀도가 서로 다른데 레이아웃 크기를 픽셀로 정의하면 동일한 픽셀 수치가 다른 기기에서 다른 물리적 크기와 대응할 있어 문제가 됩니다. 따라서 크기를 지정할 때에는 항상 <code>dp</code> 또는 <code>sp</code> 단위를 사용하시기 바랍니다. <code>dp</code>는 160dpi에서 픽셀의 물리적 크기에 대응하는 밀도 독립형 픽셀(Density Independent Pixel)입니다. <code>sp</code>는 동일한 기본 단위이지만 사용자의 기본 텍스트 크기에 따라 확대/축소될 있으므로(배율 독립형 픽셀(Scale Independent Pixel)임) 텍스트 크기를 정의할 측정 단위를 사용해야 합니다(레이아웃 크기에 사용해서는 안됨).</p>
<p>예를 들어 개의 보기 사이에 여백을 지정할 <code>px</code>가 아닌 <code>dp</code>를 사용합니다.</p>
<pre>
&lt;Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="&#64;string/clickme"
android:layout_marginTop="20dp" /&gt;
</pre>
<p>텍스트 크기를 지정할 때에는 항상 <code>sp</code>를 사용합니다.</p>
<pre>
&lt;TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp" /&gt;
</pre>
<h2 id="TaskProvideAltBmp">대체 비트맵 제공</h2>
<p>Android 화면 밀도가 다양한 기기에서 실행되므로 각각의 일반화된 밀도 종류(저, 중, 초고 밀도)에 맞춤화된 비트맵 리소스를 제공해야 합니다. 이렇게 하면 모든 화면 밀도에서 좋은 그래픽 품질 성능을 얻는데 도움이 됩니다.</p>
<p>이러한 이미지를 생성하려면 벡터 형식의 원본 리소스부터 시작해야 하며 다음 크기 배율을 사용하여 밀도에 사용할 이미지를 생성해야 합니다.</p>
<p><ul>
<li><code>xhdpi</code>: 2.0
<li><code>hdpi</code>: 1.5
<li><code>mdpi</code>: 1.0 (기선)
<li><code>ldpi</code>: 0.75
</ul></p>
<p> <code>xhdpi</code> 기기에 대해 200x200 이미지를 생성하는 경우 <code>hdpi</code> 기기에 대해 동일한 리소스를 150x150으로 생성해야 하며 <code>mdpi</code> 기기에 대해서는 100x100, <code>ldpi</code> 기기에 대해서는 75x75으로 동일한 리소스를 생성해야 합니다.</p>
<p>그런 다음 생성된 이미지 파일을 <code>res/</code> 아래의 적절한 하위 디렉토리에 배치하면 시스템에서 애플리케이션이 실행되는 기기의 화면 밀도에 따라 정확한 이미지 파일을 자동으로 선택합니다.</p>
<pre class="classic no-pretty-print">
MyProject/
res/
drawable-xhdpi/
awesomeimage.png
drawable-hdpi/
awesomeimage.png
drawable-mdpi/
awesomeimage.png
drawable-ldpi/
awesomeimage.png
</pre>
<p>그런 다음 언제든지 <code>&#64;drawable/awesomeimage</code>를 참조하면 시스템이 화면의 dpi에 따라 적합한 비트맵을 선택합니다.</p>
<p>애플리케이션에 사용할 아이콘 저작물 제작에 대한 자세한 도움말 가이드라인은 <a
href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">아이콘 디자인 가이드라인</a>을 참조하세요.</p>