Android about screen design

New Splash Screen In Android

A better way to display Android Splash Screen. #Android12

🚣 Hi, In this article we learn to implement splash screen in android. From OLD traditional way to NEW modern way.

Introduction

Android Splash Screen usually the first screen that is displayed to the user when an app is not fully ready to display content.

How the splash screen works

When a user launches an app while the app’s process is not running (a cold start) or the Activity has not been created (a warm start), the following events occur. (The splash screen is never shown during a hot start.)

  1. The system shows the splash screen using themes and any animations that you’ve defined.

2. When the app is ready, the splash screen is dismissed and the app is displayed.

Now let’s dive in,

Initializing Splash Activity

First, To launch the activity as splash screen we just need to add the action main and category launcher to your activity in AndroidManifest.xml

Traditional Approach

The old way,

We used to pause the user interaction for like 2–3 sec for a splash screen to load.

UI Holding was never an option. As in Activity we used to write these horrific code… and activity used to look like shi**.

This used to work well back then & now too, but we all knew there should be something more than just waiting.

Modern Approach

With a new approach, we don’t declare a time to wait.

Step 1

First, Gather all necessary elements for splash screen like colors & logo.

Then, Create drawable placing logo as bitmap/drawable.

Step 2

In style declare a any desired theme for splash screen and set android:windowBackground attribute value to drawable we created.

The android:windowBackground attribute will show our created drawable on activity transition.

And, In AndroidManifest.xml we add our theme as.

Final Step

To hide content of splash screen layout, in activity remove setContentView(),

As to show created drawable as a transition between these splash & another activity we won’t be needing splash layout.

Here’s the source code… if you need.

Done. The modern approach is more convincing than our traditional approach.

Continue to read more on Android 12 Splash Screen

— Recently,

Android 12 adds the SplashScreen API, which enables a new app launch animation for all apps. This includes an into-app motion at launch, a splash screen showing your app icon, and a transition to your app itself.

The new experience brings standard design elements to every app launch, but it’s also customizable so your app can maintain its unique branding.

This is similar to our modern approach.

Read more at the official website.

Let’s test Splash by Upgrading to — Android 12,

After upgrading, From NoWhere, Boom A error popups and your application installation failed.

Installation did not succeed.
The application could not be installed: INSTALL_FAILED_VERIFICATION_FAILURE
List of apks:
[0] ‘…/build/outputs/apk/debug/app-debug.apk’
Installation failed due to: ‘null’

INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: Failed parse during installPackageLI:

Targeting S+ (version 10000 and above) requires that an explicit value for android:exported be defined when intent filters are present”

To Fix Installation failed ?👼

Now For Splash Screen,

For testing the effects & changes let’s observe with WHITE & BLACK color background first.

Create new styles.xml or theme.xml (v31).

As mentioned, It’s similar to our modern approach.

The only Difference is , we need to remove android:windowBackground for Android 12.

By default your launcher icon will act as a splash screen view.

No need to create drawable. Just add your launcher icon & Kaboom it’s a splash screen logo.

As documented, SplashScreen uses the windowBackground of your theme if it’s a single color and the launcher icon. The customization of the splash screen is done by adding attributes to the app theme.

Читайте также:  Уровни логирования android studio

But it can be customized in many ways. Amazing and simple right?

Источник

Полезные советы новичкам в дизайне под Android

Этот пост послужит своеобразным началом серии публикаций на тему «как я учусь дизайну под Android». Никогда не уделял гайдлайнам достаточно внимания, считая их скучными и неинтересными, но все изменилось. Сейчас я начинаю понимать, платформа достигла своей зрелости и предлагает ряд интересных решений.

Кнопка “назад” (The Back Button)

Долгое время back была аппаратной кнопкой Android устройств, не было смысла добавлять программный аналог в пользовательский интерфейс. Сейчас модно использовать кнопку back для навигации внутри приложений. Если говорить о кнопке “назад” пользовательского интерфейса (её называют “up button”), то между хардварной back и up есть небольшая разница. Up производит переход на один экран, в рамках приложения, в то время как back к любому приложению или контенту.

Разрешение

Параметры разрешений под Android немного путают — xhdpi (2x), hdpi (1.5x) и mdpi (1x).

Звучит крайне технически. Когда год назад я начинал работать, никто толком не мог мне объяснить какое соотношение сторон межу ними. После многих расспросов и поисков, оно составило 720×1280, 540×960 и 360×640. Проектируя дизайн макет, не забывайте учитывать хардварные кнопки и статус бар.

От переводчика: На самом деле то, что описано в этом абзаце, не совсем верно. По ссылке и в таблице вы найдете более точное описание.

Начальный набор (Starter Kit)

Джереми Салли, дизайнер из Telly, графически наглядно показал соотношение этих трех разрешений. Вам пригодится Android Action Bar Style Generator для работы с темами по умолчанию. Он позволит задать базовые параметры цвета, стиля и сохранить настройки в Zip файл для всех всех трех разрешений. Лучший способ наглядно поэкспериментировать.

9-slice Scaling

В Android есть своеобразный способ масштабирования графических ресурсов, который не похож на CSS. 9-slicing позволяет вам указать, какую именно часть картинки вы хотите масштабировать. Остальная часть, такая как закругленные углы, остается фиксированного размера даже при масштабировании всего ресурса. Для этого в файле картинки необходимо нарисовать черные линии шириной в 1px в следующих областях:

  • Top: область, которая может быть растянута по горизонтали.
  • Left: аналогично по вертикали
  • Right: Область по вертикали, в которой будет расположено содержимое. Этот параметр может использоваться для задания отступов.
  • Bottom: аналогично по вертикали

The Action Bar

В отличие от iPhone, где название обычно находится в середине заголовка, на Android название в левом верхнем углу, рядом с логотипом приложения. Нажатие на логотип обычно вызывает боковое меню или возвращает вас “назад”, к предыдущему экрану.

Под названием приложения порой можно заметить треугольную стрелочку, благодаря ей возможна навигации внутри приложения. Прямо как в сети интернет, очень частый способ отображения выпадающего меню на Android.

Наконец, если вы серьезно относитесь к гайдлайнам, все элементы управления должны быть в правом верхнем углу. Это относится и к функции обновить (потянуть, чтоб обновить как на iPhone, очень редко используются в Android), поиск, и печально известные кнопки “действия” которые в идеале дожны быть в виде трех точек. Точки используются для тех действий, которые не смог вместить Action Bar.

Шрифты

Шрифты, к сожалению, зависят от специфики устройства, так что будьте готовы к казусам. Не расстраивайтесь если вам придется протестировать дизайн на старом устройстве. Были и куда худшие дни — вспомните IE6. Самый популярный шрифт на данный момент Droid Sans. Впрочем Roboto набирает популярность, так как присутствует на новых устройствах.

Размеры

Начиная с Android 2.x, минимальный размер элемента должен быть: 28px для текста, 96px для меню и заголовка, 116px для нижнего колонтитула. Это немногим больше чем в iOS (24px, 88px и 100px). Если говорить о соотношении 116% Android к iOS.

Просматривайте проектируемый дизайн на Android устройстве

Роман Нурик из Google разработал очень полезный инструмент Android Design Preview. Инструмент поможет дизайнеру посмотреть, как нарисованный в графическом редакторе на компьютере макет приложения будет выглядеть на реальном устройстве.

Программу Android Design Preview можно установить на Windows, Mac OS X или практически любую из операционных систем семейства *nix. Приложение написано на Java и представляет собой обычный JAR-файл. Работает Android Design Preview следующим образом: разработчик подключает смартфон к компьютеру по USB (На ПК должны быть установлены ADT), запускает Design Preview, нажимает «Select Mirror Region» в этой программе и видит перед собой рамку. Эту рамку он устанавливает на макет и видит его на экране смартфона.

Читайте также:  Будет ли обновление для honor 20 pro до 11 андроид

Источник

Implementing the new Material Design Full-Screen Dialog for Android

The Material Design guidelines describe a component called a full-screen dialog. This component is not yet officially available. In this blog post I describe how to easily create a full-screen dialog that complies with the guidelines by using the existing Android DialogFrament.

The final result

In this post I demonstrate how to achieve the following behavior:

One should notice the animations when opening and closing the dialog, the toolbar of the dialog with the close button and the positive action as text, and the full screen behavior of the dialog.

When to use it

According to the Material Design guidelines, a full-screen dialog should be used if the task meets any of the following criteria:

— Dialogs that include components which require keyboard input, such as form fields
— When changes aren’t saved instantly
— When components within the dialog open additional dialogs

The “x” in the toolbar indicates that changes are discarded when closing. The positive action (usually save or submit) is displayed as text in the toolbar.

Getting started

If you want to jump directly to the source code, you can also take a look at the Git repository.

We start with a new Android Studio project with an empty activity. I’ve changed the default theme so that everything is white, and added a button to my activity that should open our full-screen dialog later on.

Please note that I use the new AndroidX support library. All the stuff works with the old version as well, only the component names in the import statements and in the XML files have to be changed.

The app now looks like this:

Creating a DialogFragment

First we create a new class which inherits from DialogFragment. A dialog fragment offers the possibility to display a fragment as a modal. This dialog runs through the normal fragment lifecycle and is displayed with the help of a fragment manager. Therefore, this fragment also needs a layout. To achieve the desired result we need a toolbar with the close button and room for our actual content.

By using the attribute app:elevation = “0dp” of the AppBarLayout it is ensured that the toolbar has no shadow, but you can adjust this to your needs. The attributes android:paddingStart = “6dp” and android:paddingÉnd = “16dp” move the close button and the text for the positive action slightly away from the edges. The standard Material Design close icon is available here and serves as a navigation icon. As content the dialog contains only one TextView as an example, but here you can insert any views you like.

The corresponding class for this dialog fragment contains a static method to display the dialog. Moreover, it inflates our previously created layout in onCreateView. After the inflation the reference to the toolbar is retrieved. The title of the toolbar is set and the actions for the close button and for selecting the menu item are adjusted.

Источник

Pixel-perfect верстка Android макетов

Разрабатывать интерфейс Android приложений — непростая задача. Приходится учитывать разнообразие разрешений и плотностей пикселей (DPI). Под катом практические советы о верстке макетов дизайна Android приложений в Layout, который совпадает с макетом на одном устройстве а на остальных растягивается без явных нарушений дизайна: выхода шрифтов за границы; огромных пустых мест и других артефактов.

UPD: Пост спорный, но много ценных советов в комментариях

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

Большое спасибо комментаторам, за то что поправили меня и высказали свою точку зрения на правильную верстку. Если вам не нужно абсолютное совпадение макетов, резюме советов из комментариев:

  • Android Design in Action: Responsive Design видео на английском как должен тянутся дизайн Android приложений
  • Supporting Multiple Screens базовая информация о разных размерах экранов Android устройств, DPI и как адаптировать приложения под несколько экранов.
  • Designing for Multiple Screens три прекрасных урока от Google о поддержке разных разрешений экрана и DPI, рекомендую начать с него.
  • совет по масштабированию шрифтов от silentnuke

Используйте разные значения размера шрифта для разных разрешений экрана.
в values\dimens.xml text_size=16sp
в values-sw600dp\dimens.xml text_size=20sp
в values-sw720dp\dimens.xml text_size=24sp

Если нужно, присмотритесь к нашей идее в посте.

На iPhone layout задаются абсолютно и всего под два экрана iPhone 4 и iPhone 5. Рисуем два макета, пишем приложение и накладываем полупрозрачные скриншоты на макеты. Проблем нет, воля дизайнера ясна, проверить что она исполнена может сам разработчик, тестировщик или, даже, билд-сервер.

Под Android у нас две проблемы: нельзя нарисовать бесконечное число макетов и нельзя сверить бесконечное число устройств с конечным числом макетов. Дизайнеры проверяют вручную. Разработчики же часто понятия не имеют как правильно растягивать элементы и масштабировать шрифты. Количество итераций стремится к бесконечности.

Чтобы упорядочить хаос мы пришли к следующему алгоритму верстки. Макеты рисуются и верстаются под любой флагманский full-hd телефон. На остальных красиво адаптируются. Готовое приложение проверяет дизайнер на популярных моделях смартфонов. Метод работает для всех телефонов, для планшетов (>6.5 дюймов) требуются отдельные макеты и верстка.

Под рукой у меня только Nexus 4 возьмем его характеристики экрана для примера.

Макеты ненастоящего приложения-портфолио которые будем верстать (полноразмерные по клику).

Layout

Основную верстку делаем через вложенные LinearLayout. Размеры элементов и блоков в пикселях переносим с макета в weight и weightSum соответственно. Отступы верстаем FrameLayout или в нужных местах добавляем Gravity.

Для примера сверстаем ячейку списка приложений:

Дальше нам потребуется много DisplayMetrics-магии, напишем для него static helper.

1184 это высота Nexus 4 без кнопок, 768 — ширина. Эти значения используются, чтобы выяснить во сколько раз высота и ширина устройства, на котором запущено приложение, отличаются от эталонного.

ScrollView и List

Подход с weightSum не примемим к прокручивающимся элементам, их внутренний размер вдоль прокрутки ничем не ограничен. Для верстки ScrollView и List нам потребуется задать их размеры в коде (130 — высота элемента списка).

И дальше можно применять трюк с weightSum.

Картинки

Размер иконок приложений задается в коде:

Где 240 высота элемента списка, 20 высота отступа сверху и снизу.

Шрифты

Андроид не предоставляет единицу измерения пропорциональную размеру экрана. Размеры шрифтов рассчитываем на основании диагонали устройства:

Да, размеры шрифта придется задавать в коде (36 размер шрифта в пикселях на оригинальном макете).

Советы по работе с графикой

1. Используйте Nine-patch везде где возможно, где невозможно — перерисуйте дизайн.
2. Простые элементы рисуйте с помощью Shape
3. Избегайте масштабирования изображений в runtime

Nine-patch это графический ресурс содержащий в себе мета-информацию о том как он должен растягиваться. Подробнее в документации Android или на Хабре.

Nine-patch нужно нарезать под все dpi: ldpi mdpi tvdpi hdpi, xhdpi, xxhdpi. Масштабирование ресурсов во время работы приложения это плохо, а масштабирование Nine-Patch приводит к неожиданным артефактам. Ни в коем случае не задавайте в Nine-patch отступы, они оформляются отдельными элементами layout, чтобы растягиваться пропорционально контенту.

Shape

Если ресурс легко раскладывается на простые геометрические фигуры и градиенты лучше вместо нарезки использовать xml-shape. Для примера нарисуем фон рамку вокруг проекта в списке, которую мы выше нарезали как Nine-patch.

Картинки

Масштабирование графики силами Android трудоемкая и затратная по памяти операция. Картинки внутри Android обрабатываются как bitmap. Например, наш логотип в размере 500×500 со сплешскрина распакуется в bitmap размером 1мб (4 байта на пиксель), при масштабировании создается еще один bitmap, скажем в 500кб. Или 1,5мб из доступных 24мб на процесс. Мы не раз сталкивались с нехваткой памяти в богатых на графику проектах.

Поэтому картинки которые нельзя описать ни Nine-patch ни Shape я предлагаю поставлять в приложении как огромный ресурс в папке nodpi и при первом запуске масштабировать изображение до нужного размера и кешировать результат. Это позволит нам ускорить работу приложения (не считая первого запуска) и уменьшить потребление памяти.

Для сложных ресурсов подгружаемых с сервера (иконки приложений на наших макетах) идеальный вариант если сервер будет отдавать картинки любого размера. Как, например, сделано на проекте Stream. Приложение просчитывает нужный размер картинки для экрана смартфона, где запущено, и запрашивает их у сервера.

P.S. советы придуманы и основа поста написаны нашим Android-гуру Лешей, огромное ему спасибо!

А как вы рекомендуете верстать макеты под Android? Сколько макетов рисует дизайнер? Как обращаетесь с графическими ресурсами?

Подписывайтесь на наш хабра-блог (кнопка справа вверху). Каждый четверг интересные статьи о мобильной разработке, маркетинге и бизнесе мобильной студии. Следующая статья (5 сентября) «C# async на iOS и Android»

Источник

Читайте также:  Часы с nfc модулем для андроида
Оцените статью