Расчет размера Appwidget

Это может быть я, но когда я вычисляю минимальные размеры виджета приложения в соответствии с формулой, приведенной на странице Android, я не получаю правильную ширину виджета; Формула такова :

Ширина (n) = (70 xn) – 30

Когда я хочу иметь виджет 5×1, правильная ширина будет (5 * 70) – 30 = 320dp. Однако при тестировании на Motorola Xoom он решает стать виджлером 4×1. Я тестировал разные значения, и 400dp кажется хорошим для 5×1 на motorola xoom с Honeycomb, но затем я бы тестировал его на обычной Galaxy Tab с Gingerbread, а затем он решает 6×1 (как и следовало ожидать).

Итак, здесь два вопроса;

  • Какую разницу между Gingerbread и Honeycomb я не замечаю?
  • Поскольку я знаю, что размер виджета ICS больше не содержит прописку между виджетами, есть ли здесь какое-то эмпирическое правило?

Solutions Collecting From Web of "Расчет размера Appwidget"

Не слишком много устройств полностью соответствуют рекомендуемой формуле Google. Вам лучше использовать несколько xml-xxx папок, которые могут указывать более точные minWidth & minHeight, которые соответствуют различным экранам и операционным системам.

Прямо сейчас я четыре исключительно на основе ОС:

xml // standard xml-v11 // Honeycomb grid xml-v14 // ICS's new extra padding xml-sw552dp-v14 // ICS tablet padding 

Но по мере настройки я могу добавить несколько новых папок для определенных dpis или экранов.

Быстрое обновление:

Только некоторые устройства используют автоматическое заполнение. Samsung и HTC имеют пользовательские интерфейсы, которые используют полноразмерные виджеты, поэтому они переопределяют заполнение ОС на своих пусковых установках.

В моем виджете 4×1 я использовал эти измерения для res / values ​​/ dimens.xml :

 <!-- size = (74 xn) - 2 --> <dimen name="appwidget_margin">0dp</dimen> <dimen name="appwidget_min_width">294dp</dimen> <dimen name="appwidget_min_height">72dp</dimen> 

И для res / values-v14 / dimens.xml :

 <!-- size = (70 xn) - 30 --> <dimen name="appwidget_margin">0dp</dimen> <dimen name="appwidget_min_width">250dp</dimen> <dimen name="appwidget_min_height">40dp</dimen> 

Я использовал набор шаблонов виджета для фоновых изображений.

В официальном руководстве написано, что маржа по умолчанию в res / values ​​/ dimens.xml должна быть 8dp, но если я использую 8dp, мой виджет будет меньше стандартных виджетов на рабочем столе (поиск Google, погода и т. Д.). Это потому, что поле для v1-v13 построено в фоновом изображении:

Введите описание изображения здесь

Я тестировал его на HTC Desire, Nexus S, эмуляторе Android 2.2 и эмуляторе Android 2.3.3. С фонами и конфигурацией пакетов шаблонов выше размер моего виджета совпадает с другими стандартными виджетами и отлично смотрится на всех проверенных мной устройствах.

Существует также проблема с различными пусковыми установками. Я рекомендую эту статью прочитать: http://radleymarx.com/blog/app-widget-padding-margins-in-ics-android/

В ICS нет прокладки, есть автоматическое заполнение. И формула, которую вы использовали для ICS. Для более старых версий существует другая формула:

 num*74 - 2 

Примечание: если вы нацеливаете pre-Honeycomb (или не указываете targetSdkVersion при указании minSdkVersion до сота), то расчеты сетки сетки (и ICS) не вступают в силу. Недостатком этого является то, что вы упускаете новые функции ОС, но если вы на самом деле не нуждаетесь в них, то сохранение целевых предустановленных сотов позволит избежать проблем с настраиваемыми папками xml.