Чтение онлайн

ЖАНРЫ

Программирование мобильных устройств на платформе .NET Compact Framework

Салмре Иво

Шрифт:

StateChangeForGameUI(GameUIState.waitForNextQuestion);

 }

}

//Абстракция, задающая текст вопросов

void setQuestionText(string textIn) {

 textBoxAskQuestion.Text = textIn;

}

//----------------------------------------------------------------

//ОБРАБОТЧИК СОБЫТИЙ: Пользователь желает увидеть следующий вопрос

//----------------------------------------------------------------

private void buttonAskQuestion_Click(object sender, System.EventArgs e) {

 SetTextForVocabularyQuestion;

 StateChangeForGameUI(GameUIState.waitForUserToStateKnowledge);

}

//---------------------------------------------------------------------

//ОБРАБОТЧИК
СОБЫТИЙ:

//Пользователь желает ответить на отображенный вопрос и сообщить, какой

//наиболее сложный уровень является для него приемлемым

//---------------------------------------------------------------------

private void buttonShowAnswers_AdvancedVersion_Click(object sender, System.EventArgs e) {

 //Установить состояние игры для отображения вариантов выбора

 StateChangeForGameUI(GameUIState.waitForUserToAnswerMultipleChoice);

}

//---------------------------------------------------------------------

//ОБРАБОТЧИК СОБЫТИЙ:

//Пользователь желает ответить на отображенный вопрос и сообщить, какой

//наиболее легкий уровень является для него приемлемым

//---------------------------------------------------------------------

private void buttonShowAnswers_SimpleVersion_Click(object sender, System.EventArgs e) {

 //Установить состояние игры для отображения вариантов выбора

 StateChangeForGameUI(GameUIState.waitForUserToAnswerMultipleChoice);

}

//ОБРАБОТЧИК СОБЫТИЙ: Был выполнен щелчок на кнопке выбора варианта ответа

private void buttonAnswer0_Click(object sender, System.EventArgs e) {

 evaluateMultipleChoiceAnswer(buttonAnswer0, 0);

}

//ОБРАБОТЧИК СОБЫТИЙ: Был выполнен щелчок на кнопке выбора варианта ответа

private void buttonAnswer1_Click(object sender, System.EventArgs e) {

 evaluateMultipleChoiceAnswer(buttonAnswer1, 1);

}

//ОБРАБОТЧИК СОБЫТИЙ: Был выполнен щелчок на кнопке выбора варианта ответа

private void buttonAnswer2_Click(object sender, System.EventArgs e) {

 evaluateMultipleChoiceAnswer(buttonAnswer2, 2);

}

//ОБРАБОТЧИК СОБЫТИЙ: Был выполнен щелчок на кнопке выбора варианта ответа

private void buttonAnswer3_Click(object sender, System.EventArgs e) {

 evaluateMultipleChoiceAnswer(buttonAnswer3, 3);

}

//ОБРАБОТЧИК СОБЫТИЙ: Был выполнен щелчок на кнопке выбора варианта ответа

private void buttonAnswer4_Click(object sender, System.EventArgs e) {

 evaluateMultipleChoiceAnswer(buttonAnswer4, 4);

}

//ОБРАБОТЧИК СОБЫТИЙ: Был выполнен щелчок на кнопке выбора варианта ответа

private void buttonAnswer5_Click(object sender, System.EventArgs e) {

 evaluateMultipleChoiceAnswer(buttonAnswer5, 5);

}

//-------------------------------------------------

//ОБРАБОТЧИК
СОБЫТИЙ: Вызывается при загрузке формы

//-------------------------------------------------

private void Form1_Load(object sender, System.EventArgs e) {

 //Задать статические свойства нашего визуального интерфейса

 SetStartControlPositionAndState;

 //Задать динамические свойства, исходя из того, в какое состояние

 //игры мы входим

 StateChangeForGameUI(GameUIState.startScreen);

}

Размещение элементов управления

В случае мобильных приложений расположение элементов пользовательского интерфейса играет большую роль как в отношении удобства пользования ими, так и в отношении возможности представить полностью всю информацию, которая необходима. Лишь в редких случаях имеет смысл простой перенос пользовательского интерфейса с настольного компьютера на мобильное устройство; лично я не могу привести ни одного примера, когда бы это сработало на практике. Экранное разрешение и модели использования в этих двух случаях настолько радикально отличаются друг от друга, что попытки втиснуть пользовательский интерфейс и модель использования приложения, свойственные настольным компьютерам, в форм-фактор мобильного устройства — это рецепт неудачи. В лучшем случае вы получите неуклюжее посредственное приложение. Гораздо целесообразнее проанализировать, ранжировать по приоритетам и явно выписать перечень всех сценариев настольного компьютера, выполнение которых на мобильном устройстве является необходимым, а также сценариев, уникальных для мобильного устройства, которые вы хотели бы поддерживать, и лишь после этого создавать пользовательский интерфейс приложения, подчинив его вытекающим из всего вышесказанного требованиям.

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

Экранное пространство — ценная вещь

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

Физические возможности мобильных устройств ограничены, и поэтому вы не сможете разместить большинство элементов управления приложений для настольных компьютеров на экране мобильного устройства даже в том случае, если уменьшите шрифты наполовину, сведете размеры элементов управления до тех минимальных пределов, при которых ими еще можно пользоваться, и расположите их как можно ближе друг к другу так, как если бы они являлись элементами игры "Tetris". Ясно, что требуется совершенно иной подход. Наилучшие интерфейсы для мобильных устройств не страдают загруженностью экрана деталями, они разрежены и элегантны; как это ни парадоксально, создается впечатление, что имеющимся свободным пространством они могли бы еще и с кем-то поделиться. Вместо того чтобы пытаться разместить на экране мобильного устройства все элементы управления сразу, целесообразнее подойти к проблеме с другой стороны и задаться вопросом: "Каков тот абсолютный минимум информации и элементов управления, которые должны присутствовать на экране, чтобы пользователь имел возможность сделать следующий шаг?" Приступая к проектированию компоновки пользовательского интерфейса мобильного приложения, попытайтесь найти ответы на следующие вопросы:

Поделиться с друзьями: