|
@@ -133,7 +133,7 @@ https://www.figma.com/file/tD64TlCMQEqlr8OTv6bW2o/KOD1.4-Variant3?node-id=0%3A1
|
|
|
5. Окройте **Preview** и убедитесь что элемент выбран весь целиком
|
|
5. Окройте **Preview** и убедитесь что элемент выбран весь целиком
|
|
|
6. Убедитесь, что формат для экспорта **PNG** и жмите **кнопку** Export
|
|
6. Убедитесь, что формат для экспорта **PNG** и жмите **кнопку** Export
|
|
|
|
|
|
|
|
-Браузер сохранить файл с тем же названием, что и у элемента вёрстки (`video-camera 2.png`). Переименуйте его, убрав пробелы, чёрточки и любую другую фигню, которая может помешать воспринимать ресурс по имени (оставьте только латинские буквы и цифры)
|
|
|
|
|
|
|
+Браузер сохранит файл с тем же названием, что и у элемента вёрстки (`video-camera 2.png`). Переименуйте его, убрав пробелы, чёрточки и любую другую фигню, которая может помешать воспринимать ресурс по имени (оставьте только латинские буквы и цифры)
|
|
|
|
|
|
|
|
Перенесите (drag-n-drop) полученный файл в ресурс drawable проекта
|
|
Перенесите (drag-n-drop) полученный файл в ресурс drawable проекта
|
|
|
|
|
|
|
@@ -172,7 +172,7 @@ Email проверяется на удовлетворение шаблону и
|
|
|
|
|
|
|
|
### Поля для ввода валидируются на пустоту
|
|
### Поля для ввода валидируются на пустоту
|
|
|
|
|
|
|
|
-Можно было бы использовать [специальный компонент](http://developer.alexanderklimov.ru/android/layout/textinputlayout.php) с маской ввода, но в задания сказано что валидация делается вручную при клике на кнопку "Зарегистрироваться". Пример ниже:
|
|
|
|
|
|
|
+Можно было бы использовать [специальный компонент](http://developer.alexanderklimov.ru/android/layout/textinputlayout.php) с маской ввода, но в задании сказано что валидация делается вручную при клике на кнопку "Зарегистрироваться". Пример ниже:
|
|
|
|
|
|
|
|
```kt
|
|
```kt
|
|
|
// обратите внимание на наименование переменных: самоочевидное название + тип элемента
|
|
// обратите внимание на наименование переменных: самоочевидное название + тип элемента
|
|
@@ -245,7 +245,7 @@ override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
|
|
|
|
|
Такая проверка делается с помощью регулярных выражений. Например:
|
|
Такая проверка делается с помощью регулярных выражений. Например:
|
|
|
|
|
|
|
|
-`^[a-z0-9]+@[a-z0-9]+\.[a-z0-9]{1,3}$`
|
|
|
|
|
|
|
+`^[a-z0-9]+@[a-z0-9]+\.[a-z]{1,3}$`
|
|
|
|
|
|
|
|
В задании сказано, что имя и домен второго уровня должны содержать только маленькие буквы и цифры.
|
|
В задании сказано, что имя и домен второго уровня должны содержать только маленькие буквы и цифры.
|
|
|
|
|
|
|
@@ -254,13 +254,13 @@ override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
* Количество символов указывается после диапазона (`+` означает 1 и более)
|
|
* Количество символов указывается после диапазона (`+` означает 1 и более)
|
|
|
* знак `@` пишем как есть
|
|
* знак `@` пишем как есть
|
|
|
* точка является зарезервированным символом регулярных выражений (означает "любой символ"), поэтому её экранируем (перед точкой пишем обратный слеш)
|
|
* точка является зарезервированным символом регулярных выражений (означает "любой символ"), поэтому её экранируем (перед точкой пишем обратный слеш)
|
|
|
-* домен первого уровня должен содержать не более 3-х символов - задаем количество в фигурных скобках (от 1 до 3)
|
|
|
|
|
|
|
+* домен первого уровня должен содержать не более 3-х **букв** - задаем количество в фигурных скобках (от 1 до 3) и оставляем только буквы
|
|
|
* знак `$` означает "конец строки"
|
|
* знак `$` означает "конец строки"
|
|
|
|
|
|
|
|
Пример проверки электронной почты:
|
|
Пример проверки электронной почты:
|
|
|
|
|
|
|
|
```kt
|
|
```kt
|
|
|
-val re = Regex("""[a-z0-9]+@[a-z0-9]+\.[a-z0-9]{1,3}""")
|
|
|
|
|
|
|
+val re = Regex("""[a-z0-9]+@[a-z0-9]+\.[a-z]{1,3}""")
|
|
|
val res = re.find(emailEditText.text.ToString())
|
|
val res = re.find(emailEditText.text.ToString())
|
|
|
// если регулярное выражение ничего не найдет, то вернёт null
|
|
// если регулярное выражение ничего не найдет, то вернёт null
|
|
|
if(res == null)
|
|
if(res == null)
|
|
@@ -269,7 +269,7 @@ if(res == null)
|
|
|
|
|
|
|
|
### При первом запуске приложения первым отображается SignUp Screen, при последующих - SignIn (0.1 балла)
|
|
### При первом запуске приложения первым отображается SignUp Screen, при последующих - SignIn (0.1 балла)
|
|
|
|
|
|
|
|
-Для того чтобы узнать первый запуск или нет, нужно сохранить этот признак в постоянное хранилище. Пример работы с хранилищем есть в [шпаргалке](../shpora/preferences.md). Попробуйте разобраться самомтоятельно.
|
|
|
|
|
|
|
+Для того чтобы узнать первый запуск или нет, нужно сохранить этот признак в постоянное хранилище. Пример работы с хранилищем есть в [шпаргалке](../shpora/preferences.md). Попробуйте разобраться самостоятельно.
|
|
|
|
|
|
|
|
## Экран авторизации
|
|
## Экран авторизации
|
|
|
|
|
|