Giter VIP home page Giter VIP logo

rsschool2021-android-task-quiz's Introduction

rsschool2021-Android-task-quiz

Rolling Scopes School - Android 2021 - Stage 1 - Task 2 - Quiz

☝️ Во втором практическом задании создадим приложение-квиз, с возможностью шарить результат

quiz app

или см. демо-видео на YouTube

Описание задания

Приложение состоит из нескольких экранов с вопросами (минимальное число вопросов 5) и экрана с результатом. На экране с вопросом:

  • текст вопроса
  • варианты ответов - оформить как radio buttons. Давайте для простоты установим, что только один вариант ответа правильный. Пользователь не может выбрать несколько вариантов ответа на вопрос, только один (принцип radio buttons). Пользователь может менять свой выбор. Минимальное число вариантов ответов 5.
  • кнопка Next - ведёт на следующий экран с вопросом. На последнем экране с вопросом меняется на Submit. Нажатие на Submit открывает экран с результатом квиза. Кнопки Next и Submit недоступны, если вариант ответа не выбран.
  • кнопка Previous - ведёт на предыдущий экран с вопросом. Недоступна для первого экрана с вопросом.
  • на Toolbar отображается порядковый номер вопроса

При переходах между экранами через кнопки Previous или Next уже выбранные варианты ответов сохраняются. Варианты ответов могут быть изменены до нажатия Submit. На toolbar доступна кнопка <, поведение которой аналогично поведению Previous.

На экране с результатом:

  • текст результата, отображающий информацию о количестве верных ответов. Например, "Результат: 40 %" или "Результат: 5 из 5" - тут на ваше усмотрение.
  • кнопка Share - возможность пошарить результат квиза. Например, через email. При этом сгенерированный текст должен содержать: результат квиза, список вопросов с порядковым номером вопроса и c выбранным пользователем вариантом ответа.
  • кнопка Back - сбрасывает результаты квиза. Перенаправляет пользователя на начальный экран.
  • кнопка Exit - закрывает приложение

📱 Требования к дизайну:

  • смотрите пример возможного дизайна выше на видео. В layouts в этом репозитории дан возможный layout фрагмента с вопросом. Можно оставить как есть или сделать свой вариант.
  • каждому отдельному экрану с вопросом должна соответствовать своя тема (Theme). В репозитории есть возможные варианты цветов и 2 темы. Можно добавить свои темы и цвета по аналогии, менять существующие темы и цвета.

💻 Требования к коду:

  • в прошлый раз мы получали ссылки на view через findViewById(). На сегодня это не самый лучший вариант. Давайте использовать view binding
  • Kotlin
  • способы хранения данных с вопросами, вариантами ответов, и правильными вариантами - на ваше усмотрение: можно захардкодить в виде списков прямо в исходниках, читать из файла или из базы данных, etc. - это никак не влияет на баллы, поэтому выбирайте способ, который вам удобнее. Вопросы можно любые, язык не важен, в рамках приличия и более-менее осмысленные 🙂
  • в качестве рекомендации: используйте для этого и других проектов ktx-library. Это общая практика. Код становится красивее, кодить удобнее... Например, arguments для фрагмента можно задавать используя bundleOf()
  • старайтесь, чтобы код выглядил читабельно. Следите за форматированием. Лучше разбить логику на несколько методов и дать им осмысленные названия, чем пытаться уместить всё в один метод. Не используйте var там, где достаточно val. Не стоит использовать уловки типа !! или lateinit, если без них можно обойтись... Изучайте Kotlin Coding conventions
  • не злоупотребляйте программированием, отдыхайте, депривация сна приводит к существенному снижению работоспособности 🛌🏼

Cross-checking

  • Изучите требования к cross-check
  • Форму для оценки задания по критериям ищите здесь ⚡️

Успехов! 🤞

rsschool2021-android-task-quiz's People

Contributors

ziginsider avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.