Как мне поддерживать различные размеры экрана в Windows Mobile?
-
20-09-2019 - |
Вопрос
Я пишу компактное рамочное приложение для 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 экрана, используя найденный код здесь (немного устарел, но все еще работает).Затем я протестировал приложение со всеми разрешениями, предоставляемыми эмуляторами, и не обнаружил никаких проблем.
Предостережение:Я "потратил впустую" нижнюю часть экрана, так что ничего особенного не требовалось для решения квадратных экранов и альбомной / портретной ориентации.