Submit Search
Upload
«Android Design Library. Внедрение material-дизайна». Максим Юдин
•
0 likes
•
833 views
DataArt
Follow
Доклад с GDG DEvFest Voronezh 2015.
Read less
Read more
Software
Report
Share
Report
Share
1 of 16
Download now
Download to read offline
Recommended
Infinum Android Talks #13 - Design Support Library by Ivan Markusi
Infinum Android Talks #13 - Design Support Library by Ivan Markusi
Infinum
Support Design Library
Support Design Library
Taeho Kim
8 Things Your Transferees are Thankful For
8 Things Your Transferees are Thankful For
UrbanBound
"Пикладная эмпатия" Алексей Аболмасов, «Ёрд»
"Пикладная эмпатия" Алексей Аболмасов, «Ёрд»
DataArt
«Прототип за 60 секунд: о вайрфреймах и прототипах»
«Прототип за 60 секунд: о вайрфреймах и прототипах»
DataArt
Social media 2.0 february edition
Social media 2.0 february edition
Boise Regional REALTORS
Никита Корчагин - Introduction to iOS development
Никита Корчагин - Introduction to iOS development
DataArt
Benefits for Millennials
Benefits for Millennials
UrbanBound
Recommended
Infinum Android Talks #13 - Design Support Library by Ivan Markusi
Infinum Android Talks #13 - Design Support Library by Ivan Markusi
Infinum
Support Design Library
Support Design Library
Taeho Kim
8 Things Your Transferees are Thankful For
8 Things Your Transferees are Thankful For
UrbanBound
"Пикладная эмпатия" Алексей Аболмасов, «Ёрд»
"Пикладная эмпатия" Алексей Аболмасов, «Ёрд»
DataArt
«Прототип за 60 секунд: о вайрфреймах и прототипах»
«Прототип за 60 секунд: о вайрфреймах и прототипах»
DataArt
Social media 2.0 february edition
Social media 2.0 february edition
Boise Regional REALTORS
Никита Корчагин - Introduction to iOS development
Никита Корчагин - Introduction to iOS development
DataArt
Benefits for Millennials
Benefits for Millennials
UrbanBound
180 blue
180 blue
Bill Buffalo
E-Guardian Plus Kit Brochure
E-Guardian Plus Kit Brochure
Espar Climate Control Systems
"В поисках эффективности: Slack и BitBucket", Юлия Писаревская, GoodSellUs
"В поисках эффективности: Slack и BitBucket", Юлия Писаревская, GoodSellUs
DataArt
A New Lump Sum for a New Generation
A New Lump Sum for a New Generation
UrbanBound
Christmas eve presentatie uit Polen
Christmas eve presentatie uit Polen
evertvangool
Миша Постольный «Контрформа». Харьков.
Миша Постольный «Контрформа». Харьков.
DataArt
Riley slides (2)
Riley slides (2)
Carisma Dunbar
Роман Еникеев - PHP обязан умирать
Роман Еникеев - PHP обязан умирать
DataArt
ajax - the basics
ajax - the basics
Arnelle Balane
Расширение Visual studio для ASP.NET Identity
Расширение Visual studio для ASP.NET Identity
DataArt
Fruit and vegetables
Fruit and vegetables
sofia84k
First story board pictures
First story board pictures
Abbey Cotterill
Альтернативные способы заваривания кофе
Альтернативные способы заваривания кофе
DataArt
Sam mendes
Sam mendes
spencerajjohnston
Сергей Марков «Pre-sales и старт проекта глазами компании, менеджера, команды»
Сергей Марков «Pre-sales и старт проекта глазами компании, менеджера, команды»
DataArt
DataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human Approach
DataArt
DataArt Healthcare & Life Sciences
DataArt Healthcare & Life Sciences
DataArt
DataArt Financial Services and Capital Markets
DataArt Financial Services and Capital Markets
DataArt
About DataArt HR Partners
About DataArt HR Partners
DataArt
Event management в IT
Event management в IT
DataArt
Digital Marketing from inside
Digital Marketing from inside
DataArt
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
DataArt
More Related Content
Viewers also liked
180 blue
180 blue
Bill Buffalo
E-Guardian Plus Kit Brochure
E-Guardian Plus Kit Brochure
Espar Climate Control Systems
"В поисках эффективности: Slack и BitBucket", Юлия Писаревская, GoodSellUs
"В поисках эффективности: Slack и BitBucket", Юлия Писаревская, GoodSellUs
DataArt
A New Lump Sum for a New Generation
A New Lump Sum for a New Generation
UrbanBound
Christmas eve presentatie uit Polen
Christmas eve presentatie uit Polen
evertvangool
Миша Постольный «Контрформа». Харьков.
Миша Постольный «Контрформа». Харьков.
DataArt
Riley slides (2)
Riley slides (2)
Carisma Dunbar
Роман Еникеев - PHP обязан умирать
Роман Еникеев - PHP обязан умирать
DataArt
ajax - the basics
ajax - the basics
Arnelle Balane
Расширение Visual studio для ASP.NET Identity
Расширение Visual studio для ASP.NET Identity
DataArt
Fruit and vegetables
Fruit and vegetables
sofia84k
First story board pictures
First story board pictures
Abbey Cotterill
Альтернативные способы заваривания кофе
Альтернативные способы заваривания кофе
DataArt
Sam mendes
Sam mendes
spencerajjohnston
Сергей Марков «Pre-sales и старт проекта глазами компании, менеджера, команды»
Сергей Марков «Pre-sales и старт проекта глазами компании, менеджера, команды»
DataArt
Viewers also liked
(15)
180 blue
180 blue
E-Guardian Plus Kit Brochure
E-Guardian Plus Kit Brochure
"В поисках эффективности: Slack и BitBucket", Юлия Писаревская, GoodSellUs
"В поисках эффективности: Slack и BitBucket", Юлия Писаревская, GoodSellUs
A New Lump Sum for a New Generation
A New Lump Sum for a New Generation
Christmas eve presentatie uit Polen
Christmas eve presentatie uit Polen
Миша Постольный «Контрформа». Харьков.
Миша Постольный «Контрформа». Харьков.
Riley slides (2)
Riley slides (2)
Роман Еникеев - PHP обязан умирать
Роман Еникеев - PHP обязан умирать
ajax - the basics
ajax - the basics
Расширение Visual studio для ASP.NET Identity
Расширение Visual studio для ASP.NET Identity
Fruit and vegetables
Fruit and vegetables
First story board pictures
First story board pictures
Альтернативные способы заваривания кофе
Альтернативные способы заваривания кофе
Sam mendes
Sam mendes
Сергей Марков «Pre-sales и старт проекта глазами компании, менеджера, команды»
Сергей Марков «Pre-sales и старт проекта глазами компании, менеджера, команды»
More from DataArt
DataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human Approach
DataArt
DataArt Healthcare & Life Sciences
DataArt Healthcare & Life Sciences
DataArt
DataArt Financial Services and Capital Markets
DataArt Financial Services and Capital Markets
DataArt
About DataArt HR Partners
About DataArt HR Partners
DataArt
Event management в IT
Event management в IT
DataArt
Digital Marketing from inside
Digital Marketing from inside
DataArt
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
DataArt
DevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проект
DataArt
IT Talk Kharkiv: «Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «Soft skills в IT. Польза или вред? Максим Бастион, DataArt
DataArt
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
DataArt
Communication in QA's life
Communication in QA's life
DataArt
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
DataArt
Знакомьтесь, DevOps
Знакомьтесь, DevOps
DataArt
DevOps in real life
DevOps in real life
DataArt
Codeless: автоматизация тестирования
Codeless: автоматизация тестирования
DataArt
Selenoid
Selenoid
DataArt
Selenide
Selenide
DataArt
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"
DataArt
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
DataArt
IT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNG
DataArt
More from DataArt
(20)
DataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human Approach
DataArt Healthcare & Life Sciences
DataArt Healthcare & Life Sciences
DataArt Financial Services and Capital Markets
DataArt Financial Services and Capital Markets
About DataArt HR Partners
About DataArt HR Partners
Event management в IT
Event management в IT
Digital Marketing from inside
Digital Marketing from inside
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
DevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проект
IT Talk Kharkiv: «Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «Soft skills в IT. Польза или вред? Максим Бастион, DataArt
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
Communication in QA's life
Communication in QA's life
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Знакомьтесь, DevOps
Знакомьтесь, DevOps
DevOps in real life
DevOps in real life
Codeless: автоматизация тестирования
Codeless: автоматизация тестирования
Selenoid
Selenoid
Selenide
Selenide
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
IT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNG
«Android Design Library. Внедрение material-дизайна». Максим Юдин
1.
2.
Android Design Library Внедрение
material-дизайна Максим Юдин
3.
О чем поговорим com.android.support:design:23.1.0 ●
Snackbar ● TextInputLayout ● FloatingActionButton ● NavigationView ● CoordinatorLayout ● AppBarLayout ● CollapsingToolbarLayout ● TabLayout
4.
Snackbar // LENGTH_INDEFINITE, LENGTH_LONG,
LENGTH_SHORT Snackbar.make(view, "Hello SnackBar!", Snackbar.LENGTH_SHORT) .setAction("Undo", new View.OnClickListener() { @Override public void onClick(View v) { // действие по кнопке Undo } }) .setDuration(30000) .setActionTextColor(ContextCompat.getColor(MainActivity.this, android.R.color. white)) .show();
5.
Snackbar Snackbar.make(view, "Hello SnackBar!",
Snackbar.LENGTH_SHORT) .setCallback(new Callback() { @Override public void onDismissed(Snackbar snackbar, int event) { // DISMISS_EVENT_ACTION - отмена по кнопке действия // DISMISS_EVENT_CONSECUTIVE - отмена из-за показа другого SnackBar // DISMISS_EVENT_MANUAL - отмена вручную методом dismiss() // DISMISS_EVENT_SWIPE - отмена свайпом // DISMISS_EVENT_TIMEOUT - отмена по таймауту } @Override public void onShown(Snackbar snackbar) { } }).show();
6.
TextInputLayout <android.support.design.widget.TextInputLayout android:id="@+id/emailWrapper" android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Email" android:inputType="textEmailAddress"/> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:id="@+id/passwordWrapper" android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Password" android:inputType="textPassword"/> </android.support.design.widget.TextInputLayout>
7.
TextInputLayout xmlns:app="http://schemas.android.com/apk/res-auto" TextInputLayout passwordWrapper =
(TextInputLayout) findViewById(R.id.passwordWrapper); EditText etPassword = passwordWrapper.getEditText(); passwordWrapper.setError("Пароль должен быть не менее 8 символов"); app:errorTextAppearance=”your_text_style” app:errorEnabled="false" passwordWrapper.setErrorEnabled(true); passwordWrapper.isErrorEnabled(true); passwordWrapper.setHint("Пароль"); passwordWrapper.getHint(); app:hintTextAppearance=”your_text_style” app:hintAnimationEnabled="false" passwordWrapper.setHintAnimationEnabled(false); passwordWrapper.isHintAnimationEnabled(false);
8.
FloatingActionButton <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" app:fabSize="mini | normal" android:layout_margin="@dimen/fab_margin" android:src="@drawable/ic_favorite"/> mini
- 40 dp, normal - 56 dp, src - 24dp app:backgroundTint="@color/colorPrimary" app:backgroundTintMode="multiply" setBackgroundTintList (ColorStateList tint) app:rippleColor=”@android:color/background_dark” app:borderWidth app:elevation (default 6dp) app:pressedTranslationZ (default 12dp)
9.
NavigationView <android.support.v4.widget.DrawerLayout android:fitsSystemWindows="true" > <include layout="@layout/content"
/> <android.support.design.widget.NavigationView android:id="@+id/nvMain" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" app:headerLayout="@layout/nhMain" app:menu="@menu/mnuMainNavigation"/> </android.support.v4.widget.DrawerLayout>
10.
NavigationView <menu> <group android:checkableBehavior="single"> <item android:id="@+id/nav_camera" android:icon="@drawable/ic_menu_camera" android:title="Import"
/> <item android:id="@+id/nav_gallery" android:icon="@drawable/ic_menu_gallery" android:title="Gallery" /> </group> <item android:title="Communicate"> <menu> <item android:id="@+id/nav_share" android:icon="@drawable/ic_menu_share" android:title="Share" /> <item android:id="@+id/nav_send" android:icon="@drawable/ic_menu_send" android:title="Send"/> </menu> </item> </menu>
11.
NavigationView nvMain.setNavigationItemSelectedListener( new NavigationView.OnNavigationItemSelectedListener() { @Override public
boolean onNavigationItemSelected(MenuItem menuItem) { int id = menuItem.getItemId(); if (id == R.id.nav_camеra) { // Действие по нажатию на элемент } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; } });
12.
CoordinatorLayout <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android. com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <! --
Your Scrollable View --> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar app:layout_scrollFlags="scroll|enterAlways"> <android.support.design.widget.TabLayout ... app:layout_scrollFlags="scroll|enterAlways"> </android.support.design.widget.AppBarLayout> </android.support.design.widget.CoordinatorLayout>
13.
AppBarLayout <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar app:layout_scrollFlags="scroll|enterAlways"> <android.support.design.widget.TabLayout app:layout_scrollFlags="scroll|enterAlways"> </android.support.design.widget.AppBarLayout> app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed|exitUntilCollapsed" app:layout_behavior="@string/appbar_scrolling_view_behavior"
14.
CollapsingToolbarLayout <android.support.design.widget.AppBarLayout android:layout_height="192dp" android:layout_width="match_parent"> <android.support.design.widget.CollapsingToolbarLayout android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <android.support.v7.widget.Toolbar android:layout_height="?attr/actionBarSize" android:layout_width="match_parent" app:layout_collapseMode="pin"/> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> app:layout_collapseMode="parallax" app:layout_collapseParallaxMultiplier="0.7" app:contentScrim="?attr/colorPrimary"
15.
TabLayout <android.support.design.widget.TabLayout android:id="@+id/sliding_tabs" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="scrollable|fixed" /> TabLayout tabLayout
= ...; tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); tabLayout.setupWithViewPager(viewPager);
16.
Контакты Спасибо за внимание google.com/+MaximYudin
Download now