Material Design
Принципи дизайну додатків
Тест
Особливості побудови мобільних UI
Два способи утримання телефону із сенсорним екраном однією рукою
67%
33%
Утримання телефону із сенсорним екраном двома руками
90%
10%
72%
28%
Цікаві посилання
Принципи дизайну додатків від Google
На скріншоті ліворуч заклик до дії Try it now» (Спробуйте прямо зараз) звучить непереконливо і неточно.
Заклик до дії «Знайти ідеальний будинок» на правому скріншоті, навпаки, супроводжується ясними та зрозумілими користувачеві кнопками: «Rent (орендувати), «Buy (купити), «Sell» (продати):
Текст-підказка
android:hint = "Вартість" |
На скріншоті зліва представлено меню, у деяких розділах якого частково збігається контент: це стосується пунктів «Походи» (hiking) та «Чоловіче взуття» (Men's footwear).
На скріншоті праворуч можна побачити приклад хорошого меню, яке не збиватиме користувачів з пантелику.
Воно має такі розділи: кемпінг, біг, походи, велосипедний спорт, скелелазіння, лижний спорт, сноубординг, риболовля.
Кнопка «Назад» є лише на першому етапі роботи з додатком.
Принципи дизайну додатків від Google
Автозаповнення
<AutoCompleteTextView� android:id = "@+id/autocomplete_country"� android:layout_width = "fill_parent"� android:layout_height = "wrap_content"/>
Автозаповнення
<resources>� <string-arrayname="countries_array">� <item>Afghanistan</item>� <item>Albania</item>� <item>Algeria</item>� <item>American Samoa</item>� <item>Andorra</item>� <item>Angola</item>� <item>Anguilla</item>� <item>Antarctica</item>� </string-array>�</resources>
Автозаповнення
import android.widget.ArrayAdapter�import android.widget.AutoCompleteTextView
// Get a reference to the AutoCompleteTextView in the layout�val textView = findViewById(R.id.autocomplete_country) as AutoCompleteTextView�// Get the string array�val countries:Array<out String> = resources.getStringArray(R.array.countries_array)�// Create the adapter and set it to the AutoCompleteTextView�ArrayAdapter<String>(this, Android.R.layout.simple_list_item_1, countries).also{adapter->� textView.setAdapter(adapter)
Принципи дизайну додатків від Google
Принципи дизайну додатків від Google
Аутентифікація за відбитками
Обмеження введення в EditText
android:inputType = "numberDecimal" |
android:inputType = "textPassword" |
android:inputType = "textEmailAddress" |
android:inputType = "textPersonName" |
Обмеження введення в EditText
android:inputType = "phone" |
android:inputType = "time" |
android:inputType = "textCapWords" |
android:inputType = "date" |
android:inputType = "textCapCharacters" |
Включити підказки з правопису
<EditText� android:id = "@+id/message"� android:layout_width = "wrap_content"� android:layout_height = "wrap_content"� android:inputType = �"textCapSentences|textAutoCorrect"� />
На формі праворуч є спеціальний віджет, що дозволяє легко ввести потрібну дату, а також деяка додаткова інформація.
Принципи дизайну додатків від Google
"Купити", "Орендувати", "Продати" (Buy, Rent, Sell) звичні та легкі для розуміння
Наявність незнайомих термінів чи фраз може спричинити труднощі.
Такі словосполучення як «Влаштуватися на нічліг», «Переселитися» та «Переїхати» (Roost, Migrate, Fly) можуть збити користувача з пантелику
User Interface vs User eXperience
User Interface vs User eXperience
Використання стандартних елементів
Будьте обережні з використанням нестандартних елементів, таких як нестандартне діалогове вікно платформи.
Використовуйте нативні елементи, наприклад стандартне діалогове вікно платформи
Контрастність
Контраст кольору контейнера кнопки до кольору фону менший, ніж необхідний для матеріалу контраст 3:1 (4,5:1 для маленького тексту)
Контрастність
…розділяйте їх по регіонах.
При використанні різних типів текстових полів у інтерфейсі користувача…
…не використовуйте їх поруч або в одній формі.
Текст не повинен бути усічений. Зробіть його коротким, чітким та повністю видимим.
Текст не повинен займати декілька рядків.
Не робіть текстові поля схожими на кнопки, тому що їх можна прийняти за кнопки.
Не використовуйте перемикачі, щоб увімкнути або вимкнути елементи. Кнопки радіо повідомляють, що набір елементів є варіантами, і що одночасно можна вибрати тільки один з них.
Використовуйте перемикачі, щоб увімкнути або вимкнути елемент, особливо на мобільному пристрої, замість прапорця.
Дизайн - важливий
F-образний патерн
Самі дослідники визнають, що малюнок більше схожий на форму літери E. Але здебільшого користувачі припиняють сканування після верхніх рядків.
Z-образний патерн
Розподіл тексту по ширині
Якщо зробити абзаци занадто вузькими, користувачеві доведеться дуже часто бігати очима туди сюди, викликаючи легку нудоту.
Формула розрахунку довжини тексту
Довжина тексту в пікселях = Розмір шрифту * 30.
Заміщаючий текст
Заміщаючий текст
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/my_image"
android:contentDescription="@string/my_image_description"
/>
</LinearLayout>
Статистика використання Screen Reader
Статистика використання мобільних Screen Reader
Заміщаючий текст
Використання лише одного або двох слів для опису зображення може бути неінформативним
Використовуйте заміщаючий текст, щоб передати те, що показує зображення, інформативної короткої фрази.
Довгі описи в тексті, що заміщає, можуть бути обрізані.
Більшість засобів читання з екрану не читають більше 125 символів тексту
Розміщення ключових слів у заміщувальному тексті просто з метою поліпшення SEO може спантеличити користувачів програм читання з екрану.
Додайте цільові ключові слова
Включення слів «зображення» або «знімок» до заміщувального тексту необов'язкове.
Мінімальний розмір елементів
Іконки
Fill (заливка)
Незаповнені іконки | Зафарбовані іконки |
Fill (заливка)
Weight
Grade (виділення)
Grade (градієнт)
Optical sizes (Оптичні розміри)
Використовуйте розмір 20dp для меню
(якщо у ньому багато елементів)
Використовуйте розмір 48dp для основних дій
Принципи дизайну іконок
Спростіть значки для більшої ясності та зручності читання | Не будьте надто буквальними. Уникайте складних іконок |
Принципи дизайну іконок
Сделайте иконки выразительными и жирными | Не используйте тонкие или свободные органические формы |
Принципи дизайну іконок
Використовуйте та підтримуйте єдиний візуальний стиль в одному наборі піктограм | Уникайте змішування стилів для одного набору іконок |
Принципи дизайну іконок
Чи не нахиляйте, не повертайте і не робіть іконки об'ємними | Розташуйте іконки лицьовою стороною вперед |
Використовуйте однаковий розмір для символів Material та тексту
Основные правила при сочетании типографики и символов
Основные правила при сочетании типографики и символов
Не змішуйте різні ваги
Компоненти матеріал
Колірна модель
Класифікація колірних моделей
Колір
colors.xml
Теми
<com.google.android.material.floatingactionbutton.FloatingActionButton� android:layout_width="wrap_content"� android:layout_height="wrap_content"� app:layout_constraintTop_toBottomOf="@id/tip_result"� android:layout_gravity="center_horizontal"� app:srcCompat="@android:drawable/ic_dialog_email" />
<Button� android:layout_width="wrap_content"� android:layout_height="wrap_content"/>
Система кольорів
Колір на основі вмісту
Кілька джерел кольорів
Підбір кольорової гами програми
Акцентні колірні ролі
Primary
Primary
Surface
Налаштування теми у Android
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style>
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- Color for the app bar and other primary UI elements. --> <color name="colorPrimary">#3F51B5</color> <!-- A darker variant of the primary color, used for the status bar (on Android 5.0+) and contextual app bars. --> <color name="colorPrimaryDark">#303F9F</color> <!-- a secondary color for controls like checkboxes and text fields. --> <color name="colorAccent">#FF4081</color> </resources>
Принципи підбору кольорів
Не застосовуйте колір на основі вмісту, якщо це суперечить логіці, наприклад, «затримка» має бути червоною | Рекомендується використовувати колір вмісту до всіх елементів, які не залежать від кольору. |
Не перефарбовуйте негрів
Уникайте непрозорих ілюстрацій, які контрастують із фоном | | Використовуйте прозорі png або svgs |
Використовуйте кольори, які створюють достатній контраст по відношенню до тону фону | | Уникайте дуже світлих кольорів як основних кольорів у світлих ілюстраціях. Світлі тони зливатимуться з кольором фону, створюючи недостатній контраст |
Використовуйте кольори, які створюють достатній контраст по відношенню до тону фону | | Уникайте надмірно контрастних кольорів |
Додати іконку для коментування
Ctrl + / - закоментувати/розкоментуватирядок
Ctrl+Shift+/ - закоментувати/розкоментуватиблок коду
Ієрархія базових класів Android
Material Design