Frdnz4

На Пикабу
2491 рейтинг 30 подписчиков 19 подписок 8 постов 3 в горячем
Награды:
5 лет на Пикабу
4

Тесты ПУЭ на Xamarin часть 5

Часть 1: Тесты ПУЭ на Xamarin

Часть 2: Тесты ПУЭ на Xamarin часть 2

Часть 3: Тесты ПУЭ на Xamarin часть 3

Часть 4: Тесты ПУЭ на Xamarin часть 4

Приложение: https://play.google.com/store/apps/details?id=com.GRText.pue...

Клик по кнопке "Следующий вопрос" сбрасывает все MyLabel к исходному состоянию. Затем в контексте привязок обновляется отображаемый экземпляр QuestCase и некоторые свойства. Посредством OnPropertyChanged("Имя_свойства") система извещается об изменении указанного свойства, затем система изменяет привязанные объекты.

Двойной клик по номеру вопроса открывает перехода к выбранному по номеру, вопросу.

Переход к странице настроек прост: Создаётся страница Sets, ей устанавливается контекст привязок, страница Sets отображается. Программная часть Sets содержит только конструктор, нехитрый функционал реализован в выше показанном XAML.

На этом я заканчиваю серию.

Да, я "причёсываю" проект. Думаю, он будет опубликован на Github, а ссылка будет под этим комментарием: #comment_175300323

Показать полностью 4
6

Тесты ПУЭ на Xamarin часть 4

Часть 1: Тесты ПУЭ на Xamarin

Часть 2: Тесты ПУЭ на Xamarin часть 2

Часть 3: Тесты ПУЭ на Xamarin часть 3

Приложение: https://play.google.com/store/apps/details?id=com.GRText.pue...

В конструкторе класса App устанавливается главная страница приложения - MainPage, в конструкторе главной страницы создается экземпляр класса MyView, который устанавливается контекстом привязок. Для события получения ответа GotAnswer устанавливается обработчик.

MainPage.xaml.cs содержит три поля. Color для подсвечивания MyLabel по которым сделан клик,  в вопросах где больше одного варианта ответа. Color - исходный цвет MyLabel. И переменная для работы счётчика кликов (некоторые элементы ожидают больше одного клика).

При клике по одному из MyLabel выполняется функция TapGestureRecognizer_Tapped. В ней сначала проверяется получено ли ожидаемое количество ответов. Если да, то ничего не происходит, выполнение функции завершается. Иначе, инвертируется свойство IsClicked MyLabel'a по которому был сделан клик и изменяется свойство Taps(количество выбранных ответов) контекста привязок. При изменении свойства Taps оно сравнивается с ожидаемым количеством ответов и если выбрано ожидаемое количество ответов, вопрос становится закрытым, срабатывает событие GotAnswer.

В обработчике события GotAnswer проверяется полученный ответ. Если ответ неверный, этот вопрос вносится в список чаще показываемых. Т.е. свойству Errors этого экземпляра QuestCase присваивается значение 5. Если ответ из списка чаще показываемых и ответ верный свойство Errors уменьшается на 1. Затем показываются цвета всех MyLabel.

Список чаще показываемых вопросов - это экземпляры QuestCase со свойством Errors больше 0.

Показать полностью 7
8

Тесты ПУЭ на Xamarin часть 3

Часть 1: Тесты ПУЭ на Xamarin

Часть 2: Тесты ПУЭ на Xamarin часть 2

Приложение: https://play.google.com/store/apps/details?id=com.GRText.pue...

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

Да, можно обойтись одним переключателем. )

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

Program содержит несколько вспомогательных функций. Через этот класс загружается список вопросов.

В сгенерированном при создании проекта классе App в файле App.xaml.cs устанавливается главная страница приложения.

Этот класс после автоматического создания содержит три метода вызывающихся при изменении состояния приложения: OnStart, OnSleep и OnResume.

Я написал два простых метода Open и Save для сохранения или загрузки списка вопросов в зависимости от состояния приложения.

При создании решения в проекте для Android генерится файл MainActivity.cs содержащий класс MainActivity. В этом классе определена переменная basename содержащая название файла в котором будут храниться вопросы. Этот файл в ходе работы приложения будет перезаписываться. Т.е. в перезаписываемом файле помечаются вопросы где была допущена ошибка.

Также в переменной XMLname содержится имя XML файла со списком вопросов содержащегося в Assets. Этот файл поставляется с приложением.

Выполнение приложения начинается с функции OnCreate класса MainActivity проекта для Android. Здесь загружается ранее сохранённый файл, если не получается, загружается XML поставляющийся с приложением.

Далее с созданием экземпляра класса App приложение запускается:

LoadApplication(new App(basename));

Показать полностью 8
2

Тесты ПУЭ на Xamarin часть 2

Начало: Тесты ПУЭ на Xamarin

Корневая страница приложения содержит ToolbarItem (кнопка "Настройки"), несколько Label и MyLabel и кнопку "Следующий вопрос". Четыре объекта MyLabel с вариантами ответов размещены внутри объекта ScrollView. Всё это сориентировано вертикально. Также в файле определён словарь ресурсов - это три конвертера используемых в привязках (Binding) и пара стилей определяющих внешний вид некоторых Label и Frame.

Конвертеры собраны в отдельном файле Converters.

Экземпляр конвертера PlusOdin имеет ключ PlusOdin_ и используется в привязке к свойству Text объекта Label отображающего номер вопроса. Для номера вопроса я использую номер элемента в массиве, поэтому потребовался этот конвертер. Возможно это лютый трэш )


Экземпляр конвертера IsGreaterZero имеет ключ IsGreaterZero_ и привязан к свойству BorderColor объекта Frame внутри которого размещён Label с текстом вопроса. Эта привязка определяет цвет рамки вокруг вопроса. Если вопрос из списка чаще показываемых, то рамка - красная, иначе - зелёная.


Экземпляр конвертера StringToBool с ключом StringToBool_ нужен для изменения свойства IsVisible объекта Frame в котором отображается текст четвёртого варианта ответа. К этому свойству, в свою очередь привязано свойство IsVisible вложенного объекта MyLabel. Ответов бывает 3, поэтому Frame и MyLabel четвёртого ответа при трёх ответах отображать не требуется.

Каждый вариант ответа размещён в объекте MyLabel. К свойству Text этого объекта привязан текст варианта ответа. К свойству isAnswer привязано значение типа bool определяющее верный этот вариант или нет. Таких объектов четыре.

Контекст привязок - это класс MyView. Этот класс унаследован от INotifyPropertyChanged. Когда требуется оповестить систему об изменении какого - либо свойства этого класса, вызывается метод OnPropertyChanged с названием изменившегося свойства в качестве параметра. Затем система изменяет привязки.

Показать полностью 8
33

Тесты ПУЭ на Xamarin

Не так давно я опубликовал пару постов о приложениях для подготовки к тестированию по электробезопасности. Это простые одностраничные приложения в которых крутятся вопросы по электробезопасности. На странице показывается вопрос и несколько вариантов ответа. Пользователь жмёт в выбранный им вариант. Правильный ответ показывается сразу после выбора варианта ответа. Приложение написано на Xamarin, поэтому среди прочих тегов присутствовали Xamarin и CSharp. Но, как справедливо заметили в комментариях, о Xamarin не было ничего. Исправляюсь.

Ссылки на посты:

Запилил тесты ПУЭ

Выкатил вопросы на 5 группу электробезопасности

Решение на XamarinForms содержит несколько проектов. Главный проект и проекты для каждой выбранной на этапе создания решения платформы.

Здесь была выбрана только одна платформа, поэтому решения два.

Каждый вопрос с вариантами ответов хранится в классе QuestCase.

Переменная errors - счётчик до выхода вопроса из списка чаще показываемых вопросов. Когда происходит неправильный ответ, errors становится 5. С каждым правильным ответом errors уменьшается на 1. Когда errors становится 0, вопрос исключается из списка чаще показываемых.

Интерфейс IFileWorker нужен для работы с файлом вопросов/ответов.

Этот интерфейс описан в главном проекте

а реализован в проекте для Android в классе FileWorker.

Также этот класс содержит вспомогательный метод GetFilePath, который определяет путь к указанному файлу.

Текст каждого ответа размещается в MyLabel наследованном от Label.

MyLabel знает какой ответ в нем - верный или неверный - свойство isAnswer,

MyLabel запоминает клик по нему - свойство isClicked.

Я использовал BindableProperty для реализации этих свойств.

Это первая часть поста. Планирую ещё как минимум две.

Показать полностью 5
350

Выкатил вопросы на 5 группу электробезопасности

Всё в прежнем дизайне:
правильный ответ Вы видите сразу, не дожидаясь ответа на пачку вопросов,
вопросы показываются случайно, но это можно изменить в настройках - тогда вопросы будут следовать по порядку,
вопросы, на которые был дан неправильный ответ, показываются чаще,
порядок ответов в вопросе каждый раз случайный.
Даблтап по номеру вопроса ( в правом верхнем углу ) открывает окно выбора номера вопроса вручную.
Как справедливо заметили знающие люди, приложение содержит не только вопросы по ПУЭ, но и вопросы по правилам противопожарного режима в Российской Федерации, по инструкции по оказанию первой помощи при несчастных случаях на производстве и ещё к паре-тройке тем с монструозними аббревиатурами типа ПТЭЭП.


Ссылка на приложение в google play: https://play.google.com/store/apps/details?id=com.GRText.pue...

768

Запилил тесты ПУЭ

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

Вопросы показываются рандомно, но в настройках можно переключить на последовательный режим.
В рандомном режиме вопросы, на которые был дан ошибочный ответ показываются чаще.

После ответа на вопрос сразу показывается правильный ответ.

Двойной клик по номеру вопроса открывает окно выбора номера вопроса вручную.

https://play.google.com/store/apps/details?id=com.GRText.pue...

Пока запилены третья и четвёртая группы. Возможно запилю пятую.

Забыл добавить, что порядок ответов в вопросах рандомный.

И, да, это мой первый пост.

Показать полностью 3

Запилил тесты

Наконец-то!
В этом году при подготовке к тесту по электробезопасности я получил вопросы с ответами на email, а не на бумаге. Сразу же решил реализовать давнюю идею - запилить приложение для эффективного запоминания материала. Пришлось повозиться с ручным форматированием в xml, но, думаю, оно того стоило.
Прошу "заценить" работу :

https://play.google.com/store/apps/details?id=com.GRText.pue...

И, да, это мой первый пост. )

Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества