Размеры растровых виджетов Android - PullRequest
13 голосов
/ 09 января 2011

Hallo,

Я пишу виджет, но не уверен, какой размер растрового изображения использовать в качестве фона для каждого разрешения / плотности экрана.

Согласно Android Developer AppВиджеты учебное пособие:

To find your minimum width and height in density-independent pixels (dp), use this formula:
(number of cells * 74) - 2
Following this formula, you should use 72 dp for a height of one cell, 294 dp and for a width of four cells

Так что, если мой виджет имеет 72dp x 294dp, какой размер растровых изображений мне нужен для рисования ldpi, mdpi и hdpi?

Также понадобитсякакие-либо конкретные настройки экранов поддержки в моем манифесте?

TIA,

-Frink

Обновление: я сделал несколько рисунков шахматной доски в различных размерах и цветах для каждого нарисованного-папку и опробовал их.Является ли эта плотность чем-то вроде красной сельди?

Я только что сделал скриншот моего эмулятора, работающего под HVGA, средней плотности, 320x480.Размер, занятый моим виджетом, составляет 320x100, поэтому я создаю растровое изображение 320x100 в папке mdpi в качестве фона для своего виджета. Он отлично смотрится как на моем эмуляторе, так и на LG GT540., высокая плотность, 480х854.Размер моего виджета 480х150.Создание фона такого размера и размещение его в папке hdpi правильно отображается в этом эмуляторе.У меня нет оборудования, чтобы проверить это на tho: - (

Update2: Я думаю, что теперь я могу объяснить свою проблему лучше: -)

Если у меня есть три устройства:

Device1, resolution 320x480, density ldpi
Device2, resolution 320x480, density mdpi
Device3, resolution 400x854, density mdpi

Физический размер экранов, вероятно, будет разным, но я не думаю, что фактические размеры имеют значение

Я выяснил, что для Device1 и Device2 потребуется фон 320x100, тогда как для Device3нужно 400x150 Так какого размера фон помещается в папку mdpi для правильного отображения на Device2 и Device3?

Ответы [ 2 ]

10 голосов
/ 15 января 2011

Вам просто нужно конвертировать 72dp x 294dp в фактические размеры пикселей для ldpi, mdpi и hdpi. Этот процесс объясняется здесь:

http://developer.android.com/guide/practices/screens_support.html

Формула равна pixels = dps * (density / 160), поэтому в вашем случае 72 dp x 294 dp будет равно:

  • ldpi (120): 54 x 221 пикселей
  • т / д (160): 72 x 294 пикселей
  • HDI (240): 108 х 441 пикселей
  • xhdpi (320): 144 x 588 пикселей

Обновление в ответ на ваше второе обновление: ресурсы на основе плотности предназначены для того, чтобы убедиться, что графики (примерно) имеют одинаковый фактический размер на разных устройствах. В вашем случае, однако, вас не заботит фактический размер, вы заботитесь о том, чтобы фон заполнял все пространство, которое он должен заполнить для виджета. Вы должны быть в состоянии решить эту проблему для большинства фонов, создав изображение Nine Patch. Девять патчей будет масштабироваться в соответствии с требуемым размером.

http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

http://developer.android.com/guide/developing/tools/draw9patch.html

2 голосов
/ 09 января 2011

Вот хороший совет от Google по размерам иконок здесь: http://developer.android.com/guide/practices/ui_guidelines/icon_design.html

Я думаю, они должны применяться и к пользовательским виджетам.

...