SlideShare a Scribd company logo
1 of 16
Download to read offline
Android Design Library
Внедрение material-дизайна
Максим Юдин
О чем поговорим
com.android.support:design:23.1.0
● Snackbar
● TextInputLayout
● FloatingActionButton
● NavigationView
● CoordinatorLayout
● AppBarLayout
● CollapsingToolbarLayout
● TabLayout
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();
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();
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>
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);
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)
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>
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>
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;
}
});
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>
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"
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"
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);
Контакты
Спасибо за внимание
google.com/+MaximYudin

More Related Content

Viewers also liked

"В поисках эффективности: Slack и BitBucket", Юлия Писаревская, GoodSellUs
"В поисках эффективности: Slack и BitBucket", Юлия Писаревская, GoodSellUs"В поисках эффективности: Slack и BitBucket", Юлия Писаревская, GoodSellUs
"В поисках эффективности: Slack и BitBucket", Юлия Писаревская, GoodSellUsDataArt
 
A New Lump Sum for a New Generation
A New Lump Sum for a New GenerationA New Lump Sum for a New Generation
A New Lump Sum for a New GenerationUrbanBound
 
Christmas eve presentatie uit Polen
Christmas eve presentatie uit PolenChristmas eve presentatie uit Polen
Christmas eve presentatie uit Polenevertvangool
 
Миша Постольный «Контрформа». Харьков.
Миша Постольный «Контрформа». Харьков. Миша Постольный «Контрформа». Харьков.
Миша Постольный «Контрформа». Харьков. DataArt
 
Роман Еникеев - PHP обязан умирать
Роман Еникеев - PHP обязан умиратьРоман Еникеев - PHP обязан умирать
Роман Еникеев - PHP обязан умиратьDataArt
 
Расширение Visual studio для ASP.NET Identity
Расширение Visual studio для ASP.NET IdentityРасширение Visual studio для ASP.NET Identity
Расширение Visual studio для ASP.NET IdentityDataArt
 
Fruit and vegetables
Fruit and vegetablesFruit and vegetables
Fruit and vegetablessofia84k
 
First story board pictures
First story board picturesFirst story board pictures
First story board picturesAbbey Cotterill
 
Альтернативные способы заваривания кофе
Альтернативные способы заваривания кофеАльтернативные способы заваривания кофе
Альтернативные способы заваривания кофеDataArt
 
Сергей Марков «Pre-sales и старт проекта глазами компании, менеджера, команды»
Сергей Марков «Pre-sales и старт проекта глазами компании, менеджера, команды»Сергей Марков «Pre-sales и старт проекта глазами компании, менеджера, команды»
Сергей Марков «Pre-sales и старт проекта глазами компании, менеджера, команды»DataArt
 

Viewers also liked (15)

180 blue
180 blue 180 blue
180 blue
 
E-Guardian Plus Kit Brochure
E-Guardian Plus Kit BrochureE-Guardian Plus Kit Brochure
E-Guardian Plus Kit Brochure
 
"В поисках эффективности: Slack и BitBucket", Юлия Писаревская, GoodSellUs
"В поисках эффективности: Slack и BitBucket", Юлия Писаревская, GoodSellUs"В поисках эффективности: Slack и BitBucket", Юлия Писаревская, GoodSellUs
"В поисках эффективности: Slack и BitBucket", Юлия Писаревская, GoodSellUs
 
A New Lump Sum for a New Generation
A New Lump Sum for a New GenerationA New Lump Sum for a New Generation
A New Lump Sum for a New Generation
 
Christmas eve presentatie uit Polen
Christmas eve presentatie uit PolenChristmas eve presentatie uit Polen
Christmas eve presentatie uit Polen
 
Миша Постольный «Контрформа». Харьков.
Миша Постольный «Контрформа». Харьков. Миша Постольный «Контрформа». Харьков.
Миша Постольный «Контрформа». Харьков.
 
Riley slides (2)
Riley slides (2)Riley slides (2)
Riley slides (2)
 
Роман Еникеев - PHP обязан умирать
Роман Еникеев - PHP обязан умиратьРоман Еникеев - PHP обязан умирать
Роман Еникеев - PHP обязан умирать
 
ajax - the basics
ajax - the basicsajax - the basics
ajax - the basics
 
Расширение Visual studio для ASP.NET Identity
Расширение Visual studio для ASP.NET IdentityРасширение Visual studio для ASP.NET Identity
Расширение Visual studio для ASP.NET Identity
 
Fruit and vegetables
Fruit and vegetablesFruit and vegetables
Fruit and vegetables
 
First story board pictures
First story board picturesFirst story board pictures
First story board pictures
 
Альтернативные способы заваривания кофе
Альтернативные способы заваривания кофеАльтернативные способы заваривания кофе
Альтернативные способы заваривания кофе
 
Sam mendes
Sam mendesSam mendes
Sam mendes
 
Сергей Марков «Pre-sales и старт проекта глазами компании, менеджера, команды»
Сергей Марков «Pre-sales и старт проекта глазами компании, менеджера, команды»Сергей Марков «Pre-sales и старт проекта глазами компании, менеджера, команды»
Сергей Марков «Pre-sales и старт проекта глазами компании, менеджера, команды»
 

More from DataArt

DataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt
 
DataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt
 
DataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt
 
About DataArt HR Partners
About DataArt HR PartnersAbout DataArt HR Partners
About DataArt HR PartnersDataArt
 
Event management в IT
Event management в ITEvent management в IT
Event management в ITDataArt
 
Digital Marketing from inside
Digital Marketing from insideDigital Marketing from inside
Digital Marketing from insideDataArt
 
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)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 приходит на проектDevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проектDataArt
 
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtIT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtDataArt
 
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han... «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...DataArt
 
Communication in QA's life
Communication in QA's lifeCommunication in QA's life
Communication in QA's lifeDataArt
 
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиНельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиDataArt
 
Знакомьтесь, DevOps
Знакомьтесь, DevOpsЗнакомьтесь, DevOps
Знакомьтесь, DevOpsDataArt
 
DevOps in real life
DevOps in real lifeDevOps in real life
DevOps in real lifeDataArt
 
Codeless: автоматизация тестирования
Codeless: автоматизация тестированияCodeless: автоматизация тестирования
Codeless: автоматизация тестированияDataArt
 
Selenoid
SelenoidSelenoid
SelenoidDataArt
 
Selenide
SelenideSelenide
SelenideDataArt
 
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"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: Как я перестал бояться и полюбил TestNGIT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGDataArt
 

More from DataArt (20)

DataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human Approach
 
DataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt Healthcare & Life Sciences
DataArt Healthcare & Life Sciences
 
DataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt Financial Services and Capital Markets
DataArt Financial Services and Capital Markets
 
About DataArt HR Partners
About DataArt HR PartnersAbout DataArt HR Partners
About DataArt HR Partners
 
Event management в IT
Event management в ITEvent management в IT
Event management в IT
 
Digital Marketing from inside
Digital Marketing from insideDigital 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)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 приходит на проектDevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проект
 
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtIT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
 
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han... «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 
Communication in QA's life
Communication in QA's lifeCommunication in QA's life
Communication in QA's life
 
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиНельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
 
Знакомьтесь, DevOps
Знакомьтесь, DevOpsЗнакомьтесь, DevOps
Знакомьтесь, DevOps
 
DevOps in real life
DevOps in real lifeDevOps in real life
DevOps in real life
 
Codeless: автоматизация тестирования
Codeless: автоматизация тестированияCodeless: автоматизация тестирования
Codeless: автоматизация тестирования
 
Selenoid
SelenoidSelenoid
Selenoid
 
Selenide
SelenideSelenide
Selenide
 
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"
 
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
 
IT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGIT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNG
 

«Android Design Library. Внедрение material-дизайна». Максим Юдин