2009-11-13 2 views
2

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

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

Томас

ответ

3

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

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

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

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

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

Недавно я задал очень похожий вопрос - вы можете взглянуть на него here if you wanna read different opinions.

+0

+1 для этого. Попытка справиться с изменениями ориентации и разрешения в коде путем перемещения и изменения размера - это кошмар. Намного проще просто настроить интерфейс и создать реализаций на основе запрошенного разрешения экрана. – ctacke

1

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

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

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

1

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

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

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

Предостережение: я «потратил впустую» в нижнюю часть экрана, чтобы ничего особенного не требовалось для обращения к квадратным экранам и ориентациям пейзажа/портрета.