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("Имя_свойства") система извещается об изменении указанного свойства, затем система изменяет привязанные объекты.

Тесты ПУЭ на Xamarin часть 5 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net
Тесты ПУЭ на Xamarin часть 5 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net

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

Тесты ПУЭ на Xamarin часть 5 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net

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

Тесты ПУЭ на Xamarin часть 5 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net

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

Да, я "причёсываю" проект. Думаю, он будет опубликован на 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 устанавливается обработчик.

Тесты ПУЭ на Xamarin часть 4 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Длиннопост

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

Тесты ПУЭ на Xamarin часть 4 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Длиннопост
Тесты ПУЭ на Xamarin часть 4 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Длиннопост

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

Тесты ПУЭ на Xamarin часть 4 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Длиннопост
Тесты ПУЭ на Xamarin часть 4 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Длиннопост

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

Тесты ПУЭ на Xamarin часть 4 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Длиннопост

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

Тесты ПУЭ на Xamarin часть 4 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Длиннопост
Показать полностью 6
8

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

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

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

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

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

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

Тесты ПУЭ на Xamarin часть 3 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Android разработка, Длиннопост
Тесты ПУЭ на Xamarin часть 3 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Android разработка, Длиннопост

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

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

Тесты ПУЭ на Xamarin часть 3 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Android разработка, Длиннопост
Тесты ПУЭ на Xamarin часть 3 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Android разработка, Длиннопост

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

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

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

Тесты ПУЭ на Xamarin часть 3 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Android разработка, Длиннопост

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

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

Тесты ПУЭ на Xamarin часть 3 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Android разработка, Длиннопост
Тесты ПУЭ на Xamarin часть 3 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Android разработка, Длиннопост

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

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

LoadApplication(new App(basename));

Тесты ПУЭ на Xamarin часть 3 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Android разработка, Длиннопост
Показать полностью 7
2

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

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

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

Тесты ПУЭ на Xamarin часть 2 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Длиннопост

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

Тесты ПУЭ на Xamarin часть 2 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Длиннопост

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


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


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

Тесты ПУЭ на Xamarin часть 2 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Длиннопост

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

Тесты ПУЭ на Xamarin часть 2 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Длиннопост

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

Тесты ПУЭ на Xamarin часть 2 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Длиннопост
Тесты ПУЭ на Xamarin часть 2 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Длиннопост
Тесты ПУЭ на Xamarin часть 2 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Длиннопост
Тесты ПУЭ на Xamarin часть 2 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Длиннопост
Показать полностью 8
33

Тесты ПУЭ на Xamarin

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

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

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

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

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

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

Тесты ПУЭ на Xamarin Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Длиннопост

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

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

Тесты ПУЭ на Xamarin Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Длиннопост

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

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

Тесты ПУЭ на Xamarin Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Длиннопост

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

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

Тесты ПУЭ на Xamarin Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Длиннопост

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

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

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

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

Тесты ПУЭ на Xamarin Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Длиннопост

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

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

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

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


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

768

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

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

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

Запилил тесты ПУЭ Пуэ, Xamarin, Приложение на Android, Электробезопасность, Csharp, Длиннопост

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

Запилил тесты ПУЭ Пуэ, Xamarin, Приложение на Android, Электробезопасность, Csharp, Длиннопост

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

Запилил тесты ПУЭ Пуэ, Xamarin, Приложение на Android, Электробезопасность, Csharp, Длиннопост

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...

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

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