Как мне поддерживать различные размеры экрана в Windows Mobile?

StackOverflow https://stackoverflow.com/questions/1730792

Вопрос

Я пишу компактное рамочное приложение для Windows Mobile 6.5.Приложение будет продаваться на Windowsphone Marketplace.Для этого я должен поддерживать различные размеры экрана и разрешения...но как мне это сделать?Есть ли лучшая практика или около того?Я использую в основном стандартные элементы управления, но фоновое изображение в Mainform...do Я должен сохранять его в любом разрешении и показывать динамически, в зависимости от того, на каком устройстве работает мое приложение?

Спасибо вам за ваши предложения и помощь

Томас

Это было полезно?

Решение

Я начну с того, что это спорная тема.

Мое личное мнение заключается в том, что вы должны определить существенно отличающиеся диапазоны разрешений / размеров и предоставить другой уровень пользовательского интерфейса, который вы можете поменять местами при обнаружении изменения размера, которое переходит из одного диапазона в другой (динамическое переключение может даже не быть для вас обязательным - в этом случае вы просто проверяете во время загрузки).Очевидно, что такой подход не имеет смысла, если диапазоны, которые вы определяете, очень ограничены и похожи друг на друга, поскольку в пределах одного и того же диапазона ваше приложение должно иметь возможность изменять размер прилично.

Попытка использовать все возможные разрешения с помощью одного и того же уровня пользовательского интерфейса может показаться отличной идеей, но это может привести к катастрофе.Возможно, у вас это получится, но, скорее всего, в итоге вы получите путаницу с кучей операторов IF-ELSE и SWITCH, определяющих размеры пикселей, изменяющих размеры элементов управления и перемещающих объекты.

Если вы подумаете об этом, карты Google (например, но подумайте о любом приложении для iPhone) не поддерживают одинаковый пользовательский интерфейс в мобильном и настольном браузере и так далее.Если это та разница в размере, о которой мы говорим (разрешения для мобильных устройств и для настольных компьютеров), то вам придется использовать разные слои пользовательского интерфейса в соответствии с моим предложением выше.

Святой грааль - это так называемый жидкий макет - WPF мог бы помочь в этом, но поскольку вы используете compact framework, это исключено.

Недавно я задал очень похожий вопрос - вы можете взглянуть на него вот, если вы хотите прочитать разные мнения.

Другие советы

Это крепкий орешек.Я добился разумных результатов с помощью следующего плана с минимальными усилиями.(Кстати, это ориентировано на Winform)

Самая большая проблема связана с резолюциями, которые меньший чем ожидалось.Поэтому сделайте свои экраны как можно меньше и обратите особое внимание на настройки привязки и стыковки.При отображении каждой формы установите ее на весь экран, и свойства привязки должны выполнять разумную работу по отображению вещей разумным способом.

Это начинает выглядеть глупо только в том случае, если разрешение НАМНОГО больше, чем ожидалось.
Примечание. вы можете узнать размер экрана текущей платформы с помощью экрана.PrimaryScreen.Вызов границ.

Недавно я создал небольшое приложение, просто для того, чтобы опробовать что-то.Мне нужно было отобразить фоновое изображение, поэтому я не мог использовать встроенные элементы управления, такие как Label и так далее, потому что они не поддерживают прозрачный фон.

В итоге я нарисовал весь интерфейс в событии Paint формы, используя GDI +.

Работа с различными разрешениями экрана оказалась довольно простой:интерфейс создается прототипом для обычного экрана с разрешением 96 точек на дюйм (самого маленького), затем все размеры масштабируются с использованием коэффициента, вычисляемого как 96 / actual_dpi.Вы можете получить фактическую настройку DPI экрана, используя найденный код здесь (немного устарел, но все еще работает).Затем я протестировал приложение со всеми разрешениями, предоставляемыми эмуляторами, и не обнаружил никаких проблем.

Предостережение:Я "потратил впустую" нижнюю часть экрана, так что ничего особенного не требовалось для решения квадратных экранов и альбомной / портретной ориентации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top