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>Разработчики часто допускают одну и ту же ошибку при создании макетов&nbsp;– указывают размеры и расстояния с помощью абсолютных значений в пикселях. Задавать размеры в пикселях не рекомендуется, поскольку из-за различной плотности пикселей на экранах разных устройств фактический размер макета будет неодинаков. Всегда задавайте размеры в единицах <code>dp</code> или <code>sp</code>. <code>dp</code>&nbsp;– это не зависящий от разрешения пиксель, равный физическому пикселю на экране с плотностью 160&nbsp;точек/дюйм. <code>sp</code> является аналогичной единицей измерения, но масштабируется на основе выбранного пользователем размера текста, поэтому ее следует применять для указания величины шрифта, но не размера макета.</p>
47
48<p>Например, если вы задаете расстояние между двумя представлениями, рекомендуется использовать <code>dp</code>, а не <code>px</code>:</p>
49
50<pre>
51&lt;Button android:layout_width="wrap_content"
52    android:layout_height="wrap_content"
53    android:text="&#64;string/clickme"
54    android:layout_marginTop="20dp" /&gt;
55</pre>
56
57<p>Для определения размера шрифта всегда используйте <code>sp</code>:</p>
58
59<pre>
60&lt;TextView android:layout_width="match_parent"
61    android:layout_height="wrap_content"
62    android:textSize="20sp" /&gt;
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&nbsp;x&nbsp;200, на устройствах <code>hdpi</code> должно иметь размер 150&nbsp;x&nbsp;150, на устройствах <code>mdpi</code>&nbsp;– 100&nbsp;x&nbsp;100, а на устройствах <code>ldpi</code>&nbsp;– 75&nbsp;x&nbsp;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>&#64;drawable/awesomeimage</code> система будет выбирать изображение, отвечающее разрешению экрана.</p>
97
98<p>Дополнительную информацию и советы можно найти в разделе <a
99href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">Рекомендации по созданию значков</a>.</p>
100
101