SlideShare a Scribd company logo
1 of 39
Download to read offline
Vector Drawable API
возможности применения
Олег Осипенко
oleg.s.osipenko@gmail.com
o.osipenko@rambler-co.ru
Vector Drawable API

возможности применения
Компьютерная графика
• Bitmap
• Векторные изображения
Vector Drawable API

возможности применения
Компьютерная графика
• Bitmap
• Векторные изображения
Масштабирование
16х
16х
Vector Drawable API

возможности применения
Компьютерная графика
• Bitmap
• Векторные изображения
• прямая зависимость размера файла от размера
изображения
Vector Drawable API

возможности применения
Flat & Material Design
• Windows Metro interface
• iOS 7
• Material Design в Lollipop
Vector Drawable API

возможности применения
Flat & Material Design
• отказ от скевоморфизма
• четкие контуры,

плоские заливки
• упор на типографику
Vector Drawable API

возможности применения
Flat & Material Design
• Bauhaus, швейцарская школа типографики
Vector Drawable API

возможности применения
Иконография Material Design
Vector Drawable API

возможности применения
Класс VectorDrawable
структура
<vector
android:width="290dp"
android:height="48dp"
android:viewportWidth="290"
android:viewportHeight="48" >
</vector>
Vector Drawable API

возможности применения
Класс VectorDrawable
структура
<vector
android:width="290dp"
android:height="48dp"
android:viewportWidth="290"
android:viewportHeight="48" >
</vector>
Vector Drawable API

возможности применения
Класс VectorDrawable
viewport
android:width="272dp"
android:height="290dp"
android:viewportWidth="272"
android:viewportHeight="290"
Vector Drawable API

возможности применения
Класс VectorDrawable
viewport
android:width="272dp"
android:height="290dp"
android:viewportWidth="600"
android:viewportHeight="600"
Vector Drawable API

возможности применения
Класс VectorDrawable
viewport
android:width="272dp"
android:height="290dp"
android:viewportWidth="100"
android:viewportHeight="100"
Vector Drawable API

возможности применения
Класс VectorDrawable
viewport
• отсутствует возможность 

указать PivotPoint
• TopLeft by default
Vector Drawable API

возможности применения
Класс VectorDrawable
структура
<vector
android:name
android:tint
android:tintMode
android:autoMirrored
android:alpha>
<vector/>
Vector Drawable API

возможности применения
Элемент Path
<path
android:pathData="M141.4,188.2H51V329c0,15.4,16.4,15.5,16.4,
15.5l20.8,0v19.7h0c0,0.3,0,0.5,0,0.8c0,11,8.9,19.9,19.9,19.9c11,
0,19.9-8.9,19.9-19.9c0-0.3,0-0.5,0-0.8h0v-19.7l13.4,0l13.4,0v19.7h0c0,
0.3,0,0.5,0,0.8c0,11,8.9,19.9,19.9,19.9c11,0,19.9-8.9,19.9-19.9c0-0.3,
0-0.5,0-0.8h0v-19.7l20.8,0c0,0,16.4,0,16.4-15.5V188.2H141.4z"
Vector Drawable API

возможности применения
Элемент Path
Path в Android и Path в SVG
Vector Drawable API

возможности применения
Элемент Path
<path
android:pathData
android:fillColor, android:fillAlpha
android:strokeColor, android:strokeWidth, android:strokeAlpha
android:trimPathStart, android:trimPathEnd, android:trimPathOffset
android:strokeLineCap, android:strokeLineJoin, android:strokeMiterLimit
/>
Vector Drawable API

возможности применения
Класс VectorDrawable
Несколько объектов Path можно объединить в группу
<group
android:name
android:rotation
android:pivotX, pivotY
android:scaleX, scaleY
android:translateX, translateY>
<group/>
Vector Drawable API

возможности применения
Класс AnimatedVectorDrawable
<animated-vector
android:drawable="@drawable/vector_drawable">
</animated-vector>
Vector Drawable API

возможности применения
Класс AnimatedVectorDrawable
<animated-vector
android:drawable="@drawable/vector_drawable">
<target
android:name="head"
android:animation="@anim/headAnimation" />
</animated-vector>
Vector Drawable API

возможности применения
Класс AnimatedVectorDrawable
<animated-vector
android:drawable="@drawable/vector_drawable">
<target
android:name="head"
android:animation="@anim/headAnimation" />
</animated-vector>
Vector Drawable API

возможности применения
Класс AnimatedVectorDrawable
Target - любой атрибут Path или Group
Поддерживается несколько target в одном AnimatedVectorDrawable
<animated-vector
android:drawable="@drawable/vector_drawable">
<target />
<target />
<target />
</animated-vector>
Vector Drawable API

возможности применения
Класс AnimatedVectorDrawable
несколько target - 

несколько анимаций
Vector Drawable API

возможности применения
Animation
новый valueType
<set>
<objectAnimator
android:duration="400"
android:propertyName="pathData"
android:valueType="pathType"
/>
</set>
Vector Drawable API

возможности применения
Animation
атрибут PathData
<set>
<objectAnimator
android:duration="400"
android:propertyName="pathData"
android:valueType="pathType"
android:valueFrom="@string/pathFrom"
android:valueTo="@string/pathTo"
/>
</set>
Vector Drawable API

возможности применения
Animation
pathFrom и pathTo должны иметь одинаковое количество 

и тип команд
<set>
<objectAnimator
android:duration="400"
android:propertyName="pathData"
android:valueType="pathType"
android:valueFrom="@string/pathFrom"
android:valueTo="@string/pathTo"
/>
</set>
Vector Drawable API

возможности применения
Запуск анимации
((Animatable) imageView.getBackground()).start();
• отсутствует возможность настройки хореографии
• отсутствует AnimationListener
• возможный вариант Handler.postDelayed(Runnable r)
Vector Drawable API

возможности применения
Запуск анимации
interface Animatable2
void registerAnimationCallback(AnimationCallback cb)
class AnimationCallback
void onAnimationStart()
void onAnimationEnd()
Vector Drawable API

возможности применения
Обратная поддержка
библиотека VectorCompat
https://github.com/wnafee/vector-compat
min SDK 14
• загрузка VectorDrawable либо AnimatedVectorDrawable
ResourcesCompat.getDrawable(context, R.drawable.any_drawable);
на устройствах с Lollipop - через native API
build.tools >= 22.0.1
Vector Drawable API

возможности применения
Обратная поддержка
дублирование атрибутов
<vector
android:width="290dp"
android:height="48dp"
android:viewportHeight="48"
app:vc_viewportHeight="48"
app:vc_viewportWidth="290"
android:viewportWidth="290">
</vector>
Vector Drawable API

возможности применения
Обратная поддержка
дублирование атрибутов
<path
android:name="btn_signin"
android:fillColor="@color/btn_signin"
app:vc_fillColor="@color/btn_signin"
android:pathData="@string/btn_signin_from"
app:vc_pathData="@string/btn_signin_from"
/>
Vector Drawable API

возможности применения
Обратная поддержка
дублирование атрибутов
<objectAnimator
android:valueType="pathType"
app:vc_valueType="pathType" />
Vector Drawable API

возможности применения
Обратная поддержка
особенности запуска
только в runtime
AnimatedVectorDrawable avd = ResourcesCompat

.getDrawable(context, R.drawable.any_drawable);
imageView.setBackground(avd);
((Animatable) avd).start();
Vector Drawable API

возможности применения
Vector Drawable API

возможности применения
VectAlign
инструмент для выравнивания
двух путей для создания pathAnimation
https://github.com/bonnyfone/vectalign
BetterVectorDrawable
библиотека поддержки, API >= 14
https://github.com/a-student/BetterVectorDrawable
Vector Drawable API

возможности применения
Vector Asset Studio
• создание XML файлов 

Vector Drawable из SVG
• Android Studio >= 1.4
• File > New > Vector Asset
Vector Drawable API

возможности применения
Вопросы?
Vector Drawable API

возможности применения
Спасибо за внимание!

More Related Content

Viewers also liked

KALEKO GIZAKIAK
KALEKO GIZAKIAKKALEKO GIZAKIAK
KALEKO GIZAKIAKDIFEREN
 
Как мы измеряем наши проекты
Как мы измеряем наши проектыКак мы измеряем наши проекты
Как мы измеряем наши проектыRambler Android
 
Google Identity Platform
Google Identity PlatformGoogle Identity Platform
Google Identity PlatformRambler Android
 
Visualization in Europe: School of Open Data in Moscow
Visualization in Europe: School of Open Data in MoscowVisualization in Europe: School of Open Data in Moscow
Visualization in Europe: School of Open Data in MoscowNatalia Karbasova
 
Aleksey Rehlov, External Producer, Creative Mobile OÜ
Aleksey Rehlov, External Producer, Creative Mobile OÜAleksey Rehlov, External Producer, Creative Mobile OÜ
Aleksey Rehlov, External Producer, Creative Mobile OÜWhite Nights Conference
 
Тимашев Дмитрий "Что такое визуализация данных, или почему специалисты, работ...
Тимашев Дмитрий "Что такое визуализация данных, или почему специалисты, работ...Тимашев Дмитрий "Что такое визуализация данных, или почему специалисты, работ...
Тимашев Дмитрий "Что такое визуализация данных, или почему специалисты, работ...GeeksLab Odessa
 
Разработка ПО - методология жизненного цикла
Разработка ПО - методология жизненного циклаРазработка ПО - методология жизненного цикла
Разработка ПО - методология жизненного циклаSmart-on-line
 
Артём Азевич. Эффективные подходы к разработке приложений. Как найти своего п...
Артём Азевич. Эффективные подходы к разработке приложений. Как найти своего п...Артём Азевич. Эффективные подходы к разработке приложений. Как найти своего п...
Артём Азевич. Эффективные подходы к разработке приложений. Как найти своего п...Volha Banadyseva
 
Android 2D Drawing and Animation Framework
Android 2D Drawing and Animation FrameworkAndroid 2D Drawing and Animation Framework
Android 2D Drawing and Animation FrameworkJussi Pohjolainen
 
クルマ情報を扱うREST APIの仕様と課題について
クルマ情報を扱うREST APIの仕様と課題についてクルマ情報を扱うREST APIの仕様と課題について
クルマ情報を扱うREST APIの仕様と課題についてAPI Meetup
 
Android graphics
Android graphicsAndroid graphics
Android graphicsKrazy Koder
 
Bitmap vs vectors image
Bitmap vs vectors imageBitmap vs vectors image
Bitmap vs vectors image31angel
 
Блок-схемы процессов
Блок-схемы процессовБлок-схемы процессов
Блок-схемы процессовSixSigmaOnline
 
Bitmap and Vector Images: Make Sure You Know the Differences
Bitmap and Vector Images: Make Sure You Know the DifferencesBitmap and Vector Images: Make Sure You Know the Differences
Bitmap and Vector Images: Make Sure You Know the DifferencesDavina and Caroline
 
Raster vs vector graphics
Raster vs vector graphicsRaster vs vector graphics
Raster vs vector graphicsKhang-Ling Loh
 
Vectors vs Rasters, Graphic Formats
Vectors vs Rasters, Graphic FormatsVectors vs Rasters, Graphic Formats
Vectors vs Rasters, Graphic Formatspremysl
 
Raster Vs. Vector Presentation1
Raster Vs. Vector Presentation1Raster Vs. Vector Presentation1
Raster Vs. Vector Presentation1cdoeberl
 
How to Present Data in PowerPoint
How to Present Data in PowerPointHow to Present Data in PowerPoint
How to Present Data in PowerPointMatt Hunter
 
The Search for Meaning in B2B Marketing
The Search for Meaning in B2B MarketingThe Search for Meaning in B2B Marketing
The Search for Meaning in B2B MarketingVelocity Partners
 

Viewers also liked (20)

KALEKO GIZAKIAK
KALEKO GIZAKIAKKALEKO GIZAKIAK
KALEKO GIZAKIAK
 
Как мы измеряем наши проекты
Как мы измеряем наши проектыКак мы измеряем наши проекты
Как мы измеряем наши проекты
 
Google Identity Platform
Google Identity PlatformGoogle Identity Platform
Google Identity Platform
 
Visualization in Europe: School of Open Data in Moscow
Visualization in Europe: School of Open Data in MoscowVisualization in Europe: School of Open Data in Moscow
Visualization in Europe: School of Open Data in Moscow
 
Aleksey Rehlov, External Producer, Creative Mobile OÜ
Aleksey Rehlov, External Producer, Creative Mobile OÜAleksey Rehlov, External Producer, Creative Mobile OÜ
Aleksey Rehlov, External Producer, Creative Mobile OÜ
 
Тимашев Дмитрий "Что такое визуализация данных, или почему специалисты, работ...
Тимашев Дмитрий "Что такое визуализация данных, или почему специалисты, работ...Тимашев Дмитрий "Что такое визуализация данных, или почему специалисты, работ...
Тимашев Дмитрий "Что такое визуализация данных, или почему специалисты, работ...
 
Разработка ПО - методология жизненного цикла
Разработка ПО - методология жизненного циклаРазработка ПО - методология жизненного цикла
Разработка ПО - методология жизненного цикла
 
Артём Азевич. Эффективные подходы к разработке приложений. Как найти своего п...
Артём Азевич. Эффективные подходы к разработке приложений. Как найти своего п...Артём Азевич. Эффективные подходы к разработке приложений. Как найти своего п...
Артём Азевич. Эффективные подходы к разработке приложений. Как найти своего п...
 
Android 2D Drawing and Animation Framework
Android 2D Drawing and Animation FrameworkAndroid 2D Drawing and Animation Framework
Android 2D Drawing and Animation Framework
 
クルマ情報を扱うREST APIの仕様と課題について
クルマ情報を扱うREST APIの仕様と課題についてクルマ情報を扱うREST APIの仕様と課題について
クルマ情報を扱うREST APIの仕様と課題について
 
Android graphics
Android graphicsAndroid graphics
Android graphics
 
Bitmap vs vectors image
Bitmap vs vectors imageBitmap vs vectors image
Bitmap vs vectors image
 
Vectors and Rasters
Vectors and RastersVectors and Rasters
Vectors and Rasters
 
Блок-схемы процессов
Блок-схемы процессовБлок-схемы процессов
Блок-схемы процессов
 
Bitmap and Vector Images: Make Sure You Know the Differences
Bitmap and Vector Images: Make Sure You Know the DifferencesBitmap and Vector Images: Make Sure You Know the Differences
Bitmap and Vector Images: Make Sure You Know the Differences
 
Raster vs vector graphics
Raster vs vector graphicsRaster vs vector graphics
Raster vs vector graphics
 
Vectors vs Rasters, Graphic Formats
Vectors vs Rasters, Graphic FormatsVectors vs Rasters, Graphic Formats
Vectors vs Rasters, Graphic Formats
 
Raster Vs. Vector Presentation1
Raster Vs. Vector Presentation1Raster Vs. Vector Presentation1
Raster Vs. Vector Presentation1
 
How to Present Data in PowerPoint
How to Present Data in PowerPointHow to Present Data in PowerPoint
How to Present Data in PowerPoint
 
The Search for Meaning in B2B Marketing
The Search for Meaning in B2B MarketingThe Search for Meaning in B2B Marketing
The Search for Meaning in B2B Marketing
 

Similar to Vector Drawable API. Возможности применения

CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлениюCodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлениюCodeFest
 
Ваш CSS нас не устраивает, мы придумаем свой / Роман Прудников (2ГИС)
Ваш CSS нас не устраивает, мы придумаем свой / Роман Прудников (2ГИС)Ваш CSS нас не устраивает, мы придумаем свой / Роман Прудников (2ГИС)
Ваш CSS нас не устраивает, мы придумаем свой / Роман Прудников (2ГИС)Ontico
 
Microsoft и облако Azure для разработчиков на Android – сервисы для бэкенда, ...
Microsoft и облако Azure для разработчиков на Android – сервисы для бэкенда, ...Microsoft и облако Azure для разработчиков на Android – сервисы для бэкенда, ...
Microsoft и облако Azure для разработчиков на Android – сервисы для бэкенда, ...Microsoft
 
Александр Зимин — Мобильные интерфейсы будущего
Александр Зимин — Мобильные интерфейсы будущегоАлександр Зимин — Мобильные интерфейсы будущего
Александр Зимин — Мобильные интерфейсы будущегоCocoaHeads
 
Graduate Project: designing a web site and 3D application for Elby Adbertising
Graduate Project: designing a web site and 3D application for Elby AdbertisingGraduate Project: designing a web site and 3D application for Elby Adbertising
Graduate Project: designing a web site and 3D application for Elby AdbertisingAnna Kholina
 
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...solit
 
Расчетная работа по дисциплине МАПО (Кондратюк Т.А.)
Расчетная работа по дисциплине МАПО (Кондратюк Т.А.)Расчетная работа по дисциплине МАПО (Кондратюк Т.А.)
Расчетная работа по дисциплине МАПО (Кондратюк Т.А.)Lita Ford
 
Android - 07 - User Interface
Android - 07 - User InterfaceAndroid - 07 - User Interface
Android - 07 - User InterfaceNoveo
 
Проектирование пользовательских интерфейсов в компании EPAM Systems
Проектирование пользовательских интерфейсов в компании EPAM SystemsПроектирование пользовательских интерфейсов в компании EPAM Systems
Проектирование пользовательских интерфейсов в компании EPAM SystemsSQALab
 
Введение во фронтенд-разработку
Введение во фронтенд-разработкуВведение во фронтенд-разработку
Введение во фронтенд-разработкуDenis Latushkin
 
Appium confet qa
Appium confet qaAppium confet qa
Appium confet qaISsoft
 
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.Igor Shkulipa
 
Антон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidАнтон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidDataArt
 
Кондратюк т.а. построение концептуальной модели заданной функциональности
Кондратюк т.а. построение концептуальной модели заданной функциональностиКондратюк т.а. построение концептуальной модели заданной функциональности
Кондратюк т.а. построение концептуальной модели заданной функциональностиLita Ford
 
«MVVM в Swift», Александр Зимин, независимый iOS-разработчик
«MVVM в Swift», Александр Зимин, независимый iOS-разработчик«MVVM в Swift», Александр Зимин, независимый iOS-разработчик
«MVVM в Swift», Александр Зимин, независимый iOS-разработчикMail.ru Group
 
Андрей Чипиленко - "Разработка мобильного приложения для интернет‐мага...
Андрей Чипиленко - "Разработка мобильного	   приложения	    для интернет‐мага...Андрей Чипиленко - "Разработка мобильного	   приложения	    для интернет‐мага...
Андрей Чипиленко - "Разработка мобильного приложения для интернет‐мага...ITGinGer
 
Андрій Чипиленко "Розробка мобільного додатку для Comp-online.com.ua"
Андрій Чипиленко  "Розробка мобільного додатку для Comp-online.com.ua"Андрій Чипиленко  "Розробка мобільного додатку для Comp-online.com.ua"
Андрій Чипиленко "Розробка мобільного додатку для Comp-online.com.ua"Lviv Startup Club
 
Mobile Automation based on Appium
Mobile Automation based on AppiumMobile Automation based on Appium
Mobile Automation based on AppiumAnton Sirota
 
adobe_illustrator
adobe_illustratoradobe_illustrator
adobe_illustratormiracle_cat
 

Similar to Vector Drawable API. Возможности применения (20)

CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлениюCodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
 
Ваш CSS нас не устраивает, мы придумаем свой / Роман Прудников (2ГИС)
Ваш CSS нас не устраивает, мы придумаем свой / Роман Прудников (2ГИС)Ваш CSS нас не устраивает, мы придумаем свой / Роман Прудников (2ГИС)
Ваш CSS нас не устраивает, мы придумаем свой / Роман Прудников (2ГИС)
 
Microsoft и облако Azure для разработчиков на Android – сервисы для бэкенда, ...
Microsoft и облако Azure для разработчиков на Android – сервисы для бэкенда, ...Microsoft и облако Azure для разработчиков на Android – сервисы для бэкенда, ...
Microsoft и облако Azure для разработчиков на Android – сервисы для бэкенда, ...
 
Александр Зимин — Мобильные интерфейсы будущего
Александр Зимин — Мобильные интерфейсы будущегоАлександр Зимин — Мобильные интерфейсы будущего
Александр Зимин — Мобильные интерфейсы будущего
 
Лекция Android
Лекция AndroidЛекция Android
Лекция Android
 
Graduate Project: designing a web site and 3D application for Elby Adbertising
Graduate Project: designing a web site and 3D application for Elby AdbertisingGraduate Project: designing a web site and 3D application for Elby Adbertising
Graduate Project: designing a web site and 3D application for Elby Adbertising
 
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
 
Расчетная работа по дисциплине МАПО (Кондратюк Т.А.)
Расчетная работа по дисциплине МАПО (Кондратюк Т.А.)Расчетная работа по дисциплине МАПО (Кондратюк Т.А.)
Расчетная работа по дисциплине МАПО (Кондратюк Т.А.)
 
Android - 07 - User Interface
Android - 07 - User InterfaceAndroid - 07 - User Interface
Android - 07 - User Interface
 
Проектирование пользовательских интерфейсов в компании EPAM Systems
Проектирование пользовательских интерфейсов в компании EPAM SystemsПроектирование пользовательских интерфейсов в компании EPAM Systems
Проектирование пользовательских интерфейсов в компании EPAM Systems
 
Введение во фронтенд-разработку
Введение во фронтенд-разработкуВведение во фронтенд-разработку
Введение во фронтенд-разработку
 
Appium confet qa
Appium confet qaAppium confet qa
Appium confet qa
 
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.
 
Антон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidАнтон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в android
 
Кондратюк т.а. построение концептуальной модели заданной функциональности
Кондратюк т.а. построение концептуальной модели заданной функциональностиКондратюк т.а. построение концептуальной модели заданной функциональности
Кондратюк т.а. построение концептуальной модели заданной функциональности
 
«MVVM в Swift», Александр Зимин, независимый iOS-разработчик
«MVVM в Swift», Александр Зимин, независимый iOS-разработчик«MVVM в Swift», Александр Зимин, независимый iOS-разработчик
«MVVM в Swift», Александр Зимин, независимый iOS-разработчик
 
Андрей Чипиленко - "Разработка мобильного приложения для интернет‐мага...
Андрей Чипиленко - "Разработка мобильного	   приложения	    для интернет‐мага...Андрей Чипиленко - "Разработка мобильного	   приложения	    для интернет‐мага...
Андрей Чипиленко - "Разработка мобильного приложения для интернет‐мага...
 
Андрій Чипиленко "Розробка мобільного додатку для Comp-online.com.ua"
Андрій Чипиленко  "Розробка мобільного додатку для Comp-online.com.ua"Андрій Чипиленко  "Розробка мобільного додатку для Comp-online.com.ua"
Андрій Чипиленко "Розробка мобільного додатку для Comp-online.com.ua"
 
Mobile Automation based on Appium
Mobile Automation based on AppiumMobile Automation based on Appium
Mobile Automation based on Appium
 
adobe_illustrator
adobe_illustratoradobe_illustrator
adobe_illustrator
 

Vector Drawable API. Возможности применения

  • 1. Vector Drawable API возможности применения Олег Осипенко oleg.s.osipenko@gmail.com o.osipenko@rambler-co.ru
  • 2. Vector Drawable API
 возможности применения Компьютерная графика • Bitmap • Векторные изображения
  • 3. Vector Drawable API
 возможности применения Компьютерная графика • Bitmap • Векторные изображения Масштабирование 16х 16х
  • 4. Vector Drawable API
 возможности применения Компьютерная графика • Bitmap • Векторные изображения • прямая зависимость размера файла от размера изображения
  • 5. Vector Drawable API
 возможности применения Flat & Material Design • Windows Metro interface • iOS 7 • Material Design в Lollipop
  • 6. Vector Drawable API
 возможности применения Flat & Material Design • отказ от скевоморфизма • четкие контуры,
 плоские заливки • упор на типографику
  • 7. Vector Drawable API
 возможности применения Flat & Material Design • Bauhaus, швейцарская школа типографики
  • 8. Vector Drawable API
 возможности применения Иконография Material Design
  • 9. Vector Drawable API
 возможности применения Класс VectorDrawable структура <vector android:width="290dp" android:height="48dp" android:viewportWidth="290" android:viewportHeight="48" > </vector>
  • 10. Vector Drawable API
 возможности применения Класс VectorDrawable структура <vector android:width="290dp" android:height="48dp" android:viewportWidth="290" android:viewportHeight="48" > </vector>
  • 11. Vector Drawable API
 возможности применения Класс VectorDrawable viewport android:width="272dp" android:height="290dp" android:viewportWidth="272" android:viewportHeight="290"
  • 12. Vector Drawable API
 возможности применения Класс VectorDrawable viewport android:width="272dp" android:height="290dp" android:viewportWidth="600" android:viewportHeight="600"
  • 13. Vector Drawable API
 возможности применения Класс VectorDrawable viewport android:width="272dp" android:height="290dp" android:viewportWidth="100" android:viewportHeight="100"
  • 14. Vector Drawable API
 возможности применения Класс VectorDrawable viewport • отсутствует возможность 
 указать PivotPoint • TopLeft by default
  • 15. Vector Drawable API
 возможности применения Класс VectorDrawable структура <vector android:name android:tint android:tintMode android:autoMirrored android:alpha> <vector/>
  • 16. Vector Drawable API
 возможности применения Элемент Path <path android:pathData="M141.4,188.2H51V329c0,15.4,16.4,15.5,16.4, 15.5l20.8,0v19.7h0c0,0.3,0,0.5,0,0.8c0,11,8.9,19.9,19.9,19.9c11, 0,19.9-8.9,19.9-19.9c0-0.3,0-0.5,0-0.8h0v-19.7l13.4,0l13.4,0v19.7h0c0, 0.3,0,0.5,0,0.8c0,11,8.9,19.9,19.9,19.9c11,0,19.9-8.9,19.9-19.9c0-0.3, 0-0.5,0-0.8h0v-19.7l20.8,0c0,0,16.4,0,16.4-15.5V188.2H141.4z"
  • 17. Vector Drawable API
 возможности применения Элемент Path Path в Android и Path в SVG
  • 18. Vector Drawable API
 возможности применения Элемент Path <path android:pathData android:fillColor, android:fillAlpha android:strokeColor, android:strokeWidth, android:strokeAlpha android:trimPathStart, android:trimPathEnd, android:trimPathOffset android:strokeLineCap, android:strokeLineJoin, android:strokeMiterLimit />
  • 19. Vector Drawable API
 возможности применения Класс VectorDrawable Несколько объектов Path можно объединить в группу <group android:name android:rotation android:pivotX, pivotY android:scaleX, scaleY android:translateX, translateY> <group/>
  • 20. Vector Drawable API
 возможности применения Класс AnimatedVectorDrawable <animated-vector android:drawable="@drawable/vector_drawable"> </animated-vector>
  • 21. Vector Drawable API
 возможности применения Класс AnimatedVectorDrawable <animated-vector android:drawable="@drawable/vector_drawable"> <target android:name="head" android:animation="@anim/headAnimation" /> </animated-vector>
  • 22. Vector Drawable API
 возможности применения Класс AnimatedVectorDrawable <animated-vector android:drawable="@drawable/vector_drawable"> <target android:name="head" android:animation="@anim/headAnimation" /> </animated-vector>
  • 23. Vector Drawable API
 возможности применения Класс AnimatedVectorDrawable Target - любой атрибут Path или Group Поддерживается несколько target в одном AnimatedVectorDrawable <animated-vector android:drawable="@drawable/vector_drawable"> <target /> <target /> <target /> </animated-vector>
  • 24. Vector Drawable API
 возможности применения Класс AnimatedVectorDrawable несколько target - 
 несколько анимаций
  • 25. Vector Drawable API
 возможности применения Animation новый valueType <set> <objectAnimator android:duration="400" android:propertyName="pathData" android:valueType="pathType" /> </set>
  • 26. Vector Drawable API
 возможности применения Animation атрибут PathData <set> <objectAnimator android:duration="400" android:propertyName="pathData" android:valueType="pathType" android:valueFrom="@string/pathFrom" android:valueTo="@string/pathTo" /> </set>
  • 27. Vector Drawable API
 возможности применения Animation pathFrom и pathTo должны иметь одинаковое количество 
 и тип команд <set> <objectAnimator android:duration="400" android:propertyName="pathData" android:valueType="pathType" android:valueFrom="@string/pathFrom" android:valueTo="@string/pathTo" /> </set>
  • 28. Vector Drawable API
 возможности применения Запуск анимации ((Animatable) imageView.getBackground()).start(); • отсутствует возможность настройки хореографии • отсутствует AnimationListener • возможный вариант Handler.postDelayed(Runnable r)
  • 29. Vector Drawable API
 возможности применения Запуск анимации interface Animatable2 void registerAnimationCallback(AnimationCallback cb) class AnimationCallback void onAnimationStart() void onAnimationEnd()
  • 30. Vector Drawable API
 возможности применения Обратная поддержка библиотека VectorCompat https://github.com/wnafee/vector-compat min SDK 14 • загрузка VectorDrawable либо AnimatedVectorDrawable ResourcesCompat.getDrawable(context, R.drawable.any_drawable); на устройствах с Lollipop - через native API build.tools >= 22.0.1
  • 31. Vector Drawable API
 возможности применения Обратная поддержка дублирование атрибутов <vector android:width="290dp" android:height="48dp" android:viewportHeight="48" app:vc_viewportHeight="48" app:vc_viewportWidth="290" android:viewportWidth="290"> </vector>
  • 32. Vector Drawable API
 возможности применения Обратная поддержка дублирование атрибутов <path android:name="btn_signin" android:fillColor="@color/btn_signin" app:vc_fillColor="@color/btn_signin" android:pathData="@string/btn_signin_from" app:vc_pathData="@string/btn_signin_from" />
  • 33. Vector Drawable API
 возможности применения Обратная поддержка дублирование атрибутов <objectAnimator android:valueType="pathType" app:vc_valueType="pathType" />
  • 34. Vector Drawable API
 возможности применения Обратная поддержка особенности запуска только в runtime AnimatedVectorDrawable avd = ResourcesCompat
 .getDrawable(context, R.drawable.any_drawable); imageView.setBackground(avd); ((Animatable) avd).start();
  • 36. Vector Drawable API
 возможности применения VectAlign инструмент для выравнивания двух путей для создания pathAnimation https://github.com/bonnyfone/vectalign BetterVectorDrawable библиотека поддержки, API >= 14 https://github.com/a-student/BetterVectorDrawable
  • 37. Vector Drawable API
 возможности применения Vector Asset Studio • создание XML файлов 
 Vector Drawable из SVG • Android Studio >= 1.4 • File > New > Vector Asset
  • 38. Vector Drawable API
 возможности применения Вопросы?
  • 39. Vector Drawable API
 возможности применения Спасибо за внимание!