Расчет размера Appwidget
Это может быть я, но когда я вычисляю минимальные размеры виджета приложения в соответствии с формулой, приведенной на странице Android, я не получаю правильную ширину виджета; Формула: следует:
width (n) = (70 x n) - 30
Когда я хочу иметь виджет 5x1, правильная ширина будет (5 * 70) - 30 = 320dp. Однако, тестируя это на motorola Xoom, он решает стать виджлером 4x1. Я тестировал разные значения, и 400dp кажется хорошим для 5x1 на motorola xoom с Honeycomb, но затем я бы тестировал его на обычной Galaxy Tab с Gingerbread, а затем он решает 6x1 (как и следовало ожидать).
Итак, два вопроса:
- Какую разницу между Gingerbread и Honeycomb я не замечаю?
- Так как я знаю, что размер виджета ICS больше не содержит прописку между виджетами, есть ли здесь какое-то правило?
Ответы
Ответ 1
Не слишком много устройств полностью следуют рекомендациям Google. Вам лучше использовать несколько папок xml-xxx, которые могут указывать более точные minWidth и minHeight, которые соответствуют различным экранам и операционным системам.
Прямо сейчас я четыре исключительно на основе ОС:
xml // standard
xml-v11 // Honeycomb grid
xml-v14 // ICS new extra padding
xml-sw552dp-v14 // ICS tablet padding
Но по мере настройки я могу добавить несколько новых папок для определенных dpis или экранов.
Быстрое обновление:
Только некоторые устройства используют автоматическое дополнение. Samsung и HTC имеют пользовательские интерфейсы, которые используют полноразмерные виджеты, поэтому они переопределяют отладку ОС на своих пусковых установках.
Ответ 2
В моем 4x1 виджетах я использовал эти измерения для res/values /dimens.xml:
<!-- size = (74 x n) - 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 x n) - 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, погода и т.д.). Thats, потому что поле для v1-v13 встроено в фоновое изображение:
![enter image description here]()
Я тестировал его на HTC Desire, Nexus S, эмуляторе Android 2.2 и эмуляторе Android 2.3.3. С фонами и конфигурацией пакетов шаблонов выше размер моего виджета совпадает с другими стандартными виджетами и хорошо смотрится на всех проверенных мной устройствах.
Существует также проблема с различными пусковыми установками. Я рекомендую эту статью прочитать: http://radleymarx.com/blog/app-widget-padding-margins-in-ics-android/
Ответ 3
В ICS нет прокладки, есть автоматическое дополнение. И формула, которую вы использовали для ICS.
Для более старых версий существует другая формула:
num*74 - 2
Ответ 4
Примечание: если вы нацеливаете pre-Honeycomb (или не указываете targetSdkVersion при указании minSdkVersion до соты), то расчеты сетки сетки (и ICS) не вступают в силу. Недостатком этого является то, что вы упускаете новые функции ОС, но если вы им действительно не нужны, то сохранение целевых пресоамов позволит сэкономить проблемы с настраиваемыми папками xml.