1page.title=Supporting Different Densities 2parent.title=Designing for Multiple Screens 3parent.link=index.html 4 5trainingnavtop=true 6previous.title=Supporting Different Screen Sizes 7previous.link=screensizes.html 8next.title=Implementing Adaptative UI Flows 9next.link=adaptui.html 10 11@jd:body 12 13 14<!-- This is the training bar --> 15<div id="tb-wrapper"> 16<div id="tb"> 17 18<h2>Содержание урока</h2> 19<ol> 20 <li><a href="#TaskUseDP">Использование пикселей, не зависящих от разрешения</a></li> 21 <li><a href="#TaskProvideAltBmp">Предоставление альтернативных растровых изображений</a></li> 22</ol> 23 24<h2>Дополнительные материалы</h2> 25 26<ul> 27 <li><a href="{@docRoot}guide/practices/screens_support.html">Поддержка нескольких экранов</a></li> 28 <li><a href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">Рекомендации по созданию значков</a></li> 29</ul> 30 31<h2>Упражнение</h2> 32 33<div class="download-box"> 34<a href="http://developer.android.com/shareables/training/NewsReader.zip" class="button">Загрузить учебное приложение</a> 35<p class="filename">NewsReader.zip</p> 36</div> 37 38 39</div> 40</div> 41 42<p>В этом уроке рассказывается, как создать интерфейс, поддерживающий разные разрешения экрана, за счет использования разных ресурсов и не зависящих от разрешения единиц измерения.</p> 43 44<h2 id="TaskUseDP">Использование пикселей, не зависящих от разрешения</h2> 45 46<p>Разработчики часто допускают одну и ту же ошибку при создании макетов – указывают размеры и расстояния с помощью абсолютных значений в пикселях. Задавать размеры в пикселях не рекомендуется, поскольку из-за различной плотности пикселей на экранах разных устройств фактический размер макета будет неодинаков. Всегда задавайте размеры в единицах <code>dp</code> или <code>sp</code>. <code>dp</code> – это не зависящий от разрешения пиксель, равный физическому пикселю на экране с плотностью 160 точек/дюйм. <code>sp</code> является аналогичной единицей измерения, но масштабируется на основе выбранного пользователем размера текста, поэтому ее следует применять для указания величины шрифта, но не размера макета.</p> 47 48<p>Например, если вы задаете расстояние между двумя представлениями, рекомендуется использовать <code>dp</code>, а не <code>px</code>:</p> 49 50<pre> 51<Button android:layout_width="wrap_content" 52 android:layout_height="wrap_content" 53 android:text="@string/clickme" 54 android:layout_marginTop="20dp" /> 55</pre> 56 57<p>Для определения размера шрифта всегда используйте <code>sp</code>:</p> 58 59<pre> 60<TextView android:layout_width="match_parent" 61 android:layout_height="wrap_content" 62 android:textSize="20sp" /> 63</pre> 64 65 66<h2 id="TaskProvideAltBmp">Предоставление альтернативных растровых изображений</h2> 67 68<p>Так как платформа Android предназначена для устройств с разными разрешениями экрана, необходимо позаботиться о наличии растровых изображений для каждого из четырех обобщенных типов разрешения: низкого, среднего, высокого и очень высокого. Это обеспечит оптимальное сочетание качества графики и производительности на всех устройствах.</p> 69 70<p>На основе исходного векторного рисунка создайте растровые изображения для каждого из указанных разрешений согласно следующей шкале размеров:</p> 71 72<p><ul> 73 <li><code>xhdpi</code>: 2,0 74 <li><code>hdpi</code>: 1,5 75 <li><code>mdpi</code>: 1,0 (стандартный размер) 76 <li><code>ldpi</code>: 0,75 77</ul></p> 78 79<p>Это означает, что изображение, которое на устройствах с разрешением экрана <code>xhdpi</code> имеет размер 200 x 200, на устройствах <code>hdpi</code> должно иметь размер 150 x 150, на устройствах <code>mdpi</code> – 100 x 100, а на устройствах <code>ldpi</code> – 75 x 75.</p> 80 81<p>Поместите файлы изображений в соответствующие подкаталоги в папке <code>res/</code>, и система автоматически выберет подходящий в зависимости от разрешения экрана устройства, на котором выполняется приложение:</p> 82 83<pre class="classic no-pretty-print"> 84MyProject/ 85 res/ 86 drawable-xhdpi/ 87 awesomeimage.png 88 drawable-hdpi/ 89 awesomeimage.png 90 drawable-mdpi/ 91 awesomeimage.png 92 drawable-ldpi/ 93 awesomeimage.png 94</pre> 95 96<p>При каждом обращении к файлу <code>@drawable/awesomeimage</code> система будет выбирать изображение, отвечающее разрешению экрана.</p> 97 98<p>Дополнительную информацию и советы можно найти в разделе <a 99href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">Рекомендации по созданию значков</a>.</p> 100 101