Как стать автором
Обновить

Лекция Яндекса: Advanced UI, часть первая

Время на прочтение23 мин
Количество просмотров12K
Мы опубликуем несколько лекций Школы мобильной разработки 2017 года. Эта школа — часть проекта Яндекса «Мобилизация». Здесь можно найти видеокурсы, составленные по итогам «Мобилизации» прошлого года.

Лекцию «Advanced UI» прочитал Дмитрий Свирихин — разработчик из команды мобильной Яндекс.Почты. Дмитрий объясняет, как при разработке интерфейса Android-приложения решать самые распространённые проблемы.


Давайте резюмируем все вышесказанное про темы. Единообразные UI-элементы мы должны стилизовать с помощью тем, при этом нам не нужно писать всю тему с нуля, мы можем унаследоваться от какой-то системной темы и первоначально задавать некоторое подмножество атрибутов для этой темы.

Всего голосов 31: ↑30 и ↓1+29
Комментарии2

Лекция Яндекса: Advanced UI, часть вторая

Время на прочтение26 мин
Количество просмотров11K
Это вторая часть лекции Дмитрия Свирихина — разработчика из команды мобильной Яндекс.Почты.

— Мы с вами продолжаем рассматривать типичные проблемы Android-разработчика и способы их решения. Мы уже рассмотрели, как решить проблему неконсистентности UI у нас в приложении, проблемы, которые могут возникнуть при взаимодействии с клавиатурой, и проблемы потери state, а также узнали, как мы можем эффективно применять кастомные view. Всю вторую часть мы посвятим ещё одной проблеме — она называется «недостаточная интерактивность». Посмотрим, как мы можем сделать наше приложение более интерактивным и понятным для пользователя.


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

Всего голосов 40: ↑37 и ↓3+34
Комментарии3

VIPER и UITableView/UICollectionView с простыми ячейками

Время на прочтение7 мин
Количество просмотров10K
Доброго времени суток!

Недавно я начал переводить приложение, написанное по плохому MVC на VIPER. Это был мой первый опыт с VIPER-архитектурой и в силу того, что информации на просторах интернета на данный момент по этой архитектуре мало, я столкнулся с некоторыми проблемами. Используя самые общие знания и понятия по VIPER, я вывел на данный момент оптимальные для себя паттерны написания экранов, включающие в себя таблицы или коллекции.

Простые и сложные ячейки


Я разделяю ячейки на простые и сложные.

Простые ячейки — это такие ячейки, которым для выполнения своего предназначения достаточно отображать некоторые данные (текст, картинка) и отвечать простыми действиями на действия пользователя.

Сложные ячейки — такие ячейки, которым для выполнения своего предназначения необходимо дополнительно подгружать данные, которые имеют сложную бизнесс-логику внутри себя.

В данной статье речь пойдет о таблице с простыми ячейками.

Проблема


Проблема заключается в том, что ячейку надо как-то собирать, как-то слушать ее события и делать это в правильном месте.
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии2

Применение FSM в управлении изменениями состояний пользовательского интерфейса

Время на прочтение13 мин
Количество просмотров2.6K

В этой статье собраны мои размышления по поводу обустройства состояния View в Android. Так, одна View имеет несколько состояний. Вот так сложилось. View одна, а показывает разное.

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Комментарии0

Всем выйти из сумрака: как добавить тень на Android

Время на прочтение10 мин
Количество просмотров8.2K

Когда заходит речь про тени на Android, возникает сразу несколько вопросов. Первый: зачем они нужны? Второй: почему нельзя использовать системные тени и жить счастливо? Третий: если нельзя использовать системные тени, как реализовать кастомные?

Это Сергей Петров, Android-разработчик в команде Design System inDrive, и вместе мы поговорим о тенях на Android.

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии4

Эффект параллакса в браузере с помощью TensorFlow.js + WASM + Three.js

Время на прочтение3 мин
Количество просмотров5.5K
Помните как Apple представила iOS7 c эффектом параллакса? Теперь это можно делать прямо в браузере.
parallax webcam threejs

На всех ноутбуках и телефонах сейчас есть камера, поэтому можно с помощью tensoflow моделей анализировать положения головы и глаз. Так же новая статья на SIGGRAPH 2020 расказывает как делать датасеты с фотограмметрией, удобные для эффекта параллакса.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии2

Rx головного мозга

Время на прочтение13 мин
Количество просмотров11K

О том, как удобно писать на Rx, какие операторы и сущности в нём есть, как делать запросы в сеть и работать с многопоточностью, не писал разве что ленивый. Кто-то рассказывает, что можно «обмазаться» Rx-ом на всех уровнях архитектуры и приложение станет реактивным, а разработка — в разы быстрее. Но как только слова доходят до дела, то встаёт множество вопросов, как подружить Rx со спецификой UI и системными API и зачем нужен Rx, кроме как для многопоточности. В этой статье я хотел бы рассказать о нашем видении разработки в реактивном стиле и на реальных примерах показать, как он упрощает жизнь.

Читать дальше →
Всего голосов 34: ↑34 и ↓0+34
Комментарии19

На SDK надейся и сам не плошай: Проблема вложенных скроллов в BottomSheetBehavior

Время на прочтение11 мин
Количество просмотров10K

Наверное, каждый, любуясь красивыми и магически плавно съезжающими в разные стороны окошками, тулбарами и остальными вьюхами, задумывался как это работает, наверное, даже что-то читал про CoordianatorLayout, про различные Behaivor, которые позволяют создавать буквально волшебство на андроидовских вьюхах. Конечно, можно писать кастомные вьюхи, с нужным поведением, которое может быть ограничено только твоим воображением или твоими знаниями в Android разработке. Но помимо этого, есть ещё одно ограничение — время, не будешь же ты писать кастомную вьюху на хакатоне, в горящем по срокам проекте, а написанные заранее решения с кастомными вьюхами могут быть освоены не за самый короткий срок членами команды. Именно тогда приходит самое простое и самое логичное решение проблемы — не выпендриваться, использовать стандартные инструменты Android, там же смышлённые ребята сидят, всё будет в шоколаде (ну или в других сладостях андроида).


Но не всё так просто, тут и начинается моё близкое знакомство с магией таких ребят, как CoordinatorLayout, BottomSheetBehavior, а точнее с багом, который выпустили из виду разработчики, когда их писали. В статье будет описан процесс выявления бага, связанного с вложенной прокруткой внутри view-компонентов с поведением BottomSheetBehavior, а также способы его решения.

Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии6

Превращаем EditText в SearchEditText

Время на прочтение6 мин
Количество просмотров4.6K
image

Пробовали ли Вы когда-нибудь настроить внешний вид или поведение стандартного компонента SearchView? Полагаю, да. В этом случае, я думаю что вы согласитесь, что далеко не все его настройки являются достаточно гибкими, для того, чтобы удовлетворить всем бизнес-требованиям отдельно взятой задачи. Одним из способов решения этой проблемы является написание собственного «кастомного» SearchView, чем мы сегодня и займемся. Поехали!

Примечание: создаваемое view (далее – SearchEditText), не будет обладать всеми свойствами стандартного SearchView. В случае необходимости, вы можете без труда добавить дополнительные опции под конкретные нужды.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии2

Pinch-to-zoom под микроскопом

Время на прочтение7 мин
Количество просмотров4K

Привет! Меня зовут Алексей Дёмин, я Android-разработчик в Prequel - мобильном редакторе для фото и видео. Сегодня я бы хотел детально разобрать реализацию поведения Pinch-to-zoom. Такое поведение широко распространено в приложениях и выглядит привычным и естественным для большинства пользователей. Поэтому, на первый взгляд, его реализация на основе предоставляемого системой api не должна вызывать трудностей. Однако при попытке разработать решение, применимое в большинстве кейсов, возникают интересные нюансы, которые я постараюсь осветить в данной статье.

Pinch to zoom!
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

ContentChild, ViewChild, template reference variables

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров10K

В Angular принято писать декларативный код. Это значит, что нам не стоит руками запрашивать нужные нам сущности. Во фреймворке есть инструменты для работы с элементами шаблона, которые помогут нам. О них сегодня и поговорим.

Давайте!
Всего голосов 15: ↑15 и ↓0+15
Комментарии2

Анонс VMware View 4.5

Время на прочтение2 мин
Количество просмотров2.7K
Недавно директор VWware (product marketing) Рей Маллемпати Raj Mallempati анонсировал запуск VMware View 4.5. Посмотрел весь текст анонса и вот то, что меня больше всего заинтересовало:
Читать дальше →
Всего голосов 11: ↑7 и ↓4+3
Комментарии11

Антивирусная защита VMware View

Время на прочтение2 мин
Количество просмотров3.6K
Как правильно защитить виртуальные машины? Надо ли ставить отдельную копию антивирусного ПО внутри каждой ВМ? Как снизить нагрузку на гипервизор? Уверен, что эти и много подобных вопросов посещало (и посещает) тех, кто внедряет виртуальные решения в целом, и решения VDI в частности. Попробуем разобраться!
Читать дальше →
Всего голосов 11: ↑5 и ↓6-1
Комментарии4

Оптимизация Win 7 для VDI

Время на прочтение5 мин
Количество просмотров20K
Итак, коллеги, сегодня поговорим о подготовке виртуальной машины с ОС Windows 7 для дальнейшего клонирования в среде VDI. Не стоит рассматривать этот пост в качестве безусловного руководства к действию, это лишь рекомендации для администраторов, как максимально оптимизировать Windows 7 для эффективного использования аппаратных ресурсов серверов виртуализации. В качестве платформы виртуализации рассматривается гипервизор VMware ESX, как лидер в своей области.
Читать дальше →
Всего голосов 41: ↑28 и ↓13+15
Комментарии12

Новый SwipeRefreshLayout из библиотеки Android support — «потяните чтобы обновить»

Время на прочтение3 мин
Количество просмотров44K
Тихо и незаметно вместе с обновлением библиотеки Android support до версии 19.1 в нее прокрался новый компонент, который часто бывает нужным и полезным в быту. Сей совсем крохотный росчерк я посвящаю ему, SwipeRefreshLayout.

Он добавляет функционал, который один мой коллега называет «резинка от трусов», а остальные знают этот UI-паттерн под названием «потяни, чтобы обновить». Он бывает нужен, когда есть какой-то контент, который пользователь хочет часто обновлять, и может это сделать, просто потянув контент жестом вниз, а потом отпустив.

Очень похоже, что компонент был создан для GoogleNow, а потом перекочевал в support lib (очень похожа анимация).
Читать дальше →
Всего голосов 41: ↑39 и ↓2+37
Комментарии7

3 способа задать разметку для различных устройств в C#/XAML приложениях Windows UWP

Время на прочтение3 мин
Количество просмотров15K

Для начала, хотелось бы напомнить, каким образом можно было создавать универсальные приложения в Windows 8.1. Создавалось решение с тремя проектами: для телефона, для Windows 8.1 и проект с общим кодом. А как теперь в Windows 10? Сейчас расскажу.
Почитать больше об этом
Всего голосов 15: ↑14 и ↓1+13
Комментарии5

Использование функций в PostgreSQL как параметризированных представлений

Время на прочтение6 мин
Количество просмотров42K

В ежедневной работе часто встает задача ясно и просто ссылаться на большие списки колонок и выражений в выборке, и/или обходиться с громоздкими и неясными условиями в предложении where. Обычно для этих целей используются представления, что вполне удобно и наглядно.

Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии1

Маршрутизация в CodeIgniter 4

Время на прочтение6 мин
Количество просмотров4.3K
image
Простой и когда-то элегантный роутинг фреймворка CodeIgniter полностью обновится в четвертой версии. Лонни Эцелл в очередной раз делится очень интересной информацией о новых возможностях. В этот раз речь пойдет о маршрутизации.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии6

Создание собственной View под Android – может ли что-то пойти не так?

Время на прочтение28 мин
Количество просмотров45K
«Дело было вечером, делать было нечего» — именно так родилась идея сделать вью с возможностью зума, распределяющую юзеров по рангам в зависимости от кол-ва их очков. Так как до этого я не имел опыта в создании собственных вьюшек такого уровня, задача показалась мне интересной и достаточно простой для начинающего… но, *ох*, как же я ошибался.

В статье я расскажу о том, с какими проблемами мне пришлось столкнутся как со стороны Android SDK, так и со стороны задачи (алгоритма кластеризации). Основная задача статьи – не научить делать так называемыми “custom view”, а показать проблемы, которые могут возникнуть при их создании.

Тема будет интересна тем из вас, кто имеет мало (или не имеет вовсе) опыта в создании чего-то подобного, а также тем, кто хочет словить лулзов с автора в сто первый раз уверовать в «гибкость» Android SDK.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии11

MVC + Scenario против Толстых Контроллеров

Время на прочтение8 мин
Количество просмотров8K

MVC + Scenario Против Толстых Контроллеров


Современные PHP фреймворки (Symphony, Laravel, далее везде) убедительно показывают, что реализовать паттерн Model-View-Controller не так уж просто. Все реализации почему-то склонны к Толстым Контроллерам (fat controllers), осуждаемыми всеми, и разработчиками, и самими фреймворками.


Почему все так? И можно ли с этим как-то справиться? Давайте разбираться.

Читать дальше →
Всего голосов 11: ↑7 и ↓4+3
Комментарии56
1