рдмреЙрдЯрдордПрдкрдмрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рднрд╛рдЧ 1: Android рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рдШрдЯрдХ

рдмреЙрдЯрдордПрдкрдмрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рднрд╛рдЧ 1: Android рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рдШрдЯрдХ


рдирд┐рдЪрд▓рд╛ рдПрдкрдмрд╛рд░ рдирдП рдПрдВрдбреНрд░реЙрдЗрдб рдордЯреЗрд░рд┐рдпрд▓ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рд╕реЗ Google I / O 2018 рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЯреВрд▓рдмрд╛рд░ рдШрдЯрдХ рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИред рдирдпрд╛ рдирд┐рдЪрд▓рд╛ рдПрдкрдмрд╛рд░ рдЯреВрд▓рдмрд╛рд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдВрдбреЛ рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рдЬреЛ рдЗрд╕рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдерд┐рдд рд╣реИред рдЗрд╕ рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рд╕рд╛рде, рд╕рд╛рдордЧреНрд░реА рдбрд┐рдЬрд╛рдЗрди рдЯреАрдо рдПрдХ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ (UX) рдХреА рдЙрдореНрдореАрдж рдХрд░рддреА рд╣реИред рдирд┐рдЪрд▓рд╛ рдЯреВрд▓рдмрд╛рд░ рд╕рд╛рдорд╛рдиреНрдп рдЯреВрд▓рдмрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд▓рдн рд╣реИред рдирд┐рдпрдВрддреНрд░рдг рдкреИрдирд▓ рдФрд░ рдореЗрдиреВ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд▓реЗ рдЬрд╛рдХрд░, рдирд┐рдЪрд▓рд╛ рдПрдкрд╛рд░ рдПрдВрдбреНрд░реЙрдпрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдбрд┐рдЬрд╛рдЗрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред


рдмреЙрдЯрдордРрдкрдмрд╛рд░ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдПрдХреНрд╢рди рдмрдЯрди (рдПрдлрдПрдмреА) рдХрд╛ рд╕реНрдерд╛рди рднреА рдмрджрд▓ рдЧрдпрд╛ рд╣реИ (рд░реВрд╕реА рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдПрдХреНрд╢рди рдмрдЯрди )ред рдЕрдм FAB рдХреЛ рдпрд╛ рддреЛ "рдХреНрд░реИрд╢рд┐рдВрдЧ" рдмреЙрдЯрдордРрдкрдмрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЗрд╕реЗ рдУрд╡рд░рд▓реИрдк рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдпрд╣ рд▓реЗрдЦ рдирдП рдПрдлрдПрдмреА рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдмреЙрдЯрдордРрдкрдмрд╛рдпрд░ рдореВрд▓ рдмрд╛рддреЗрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред


рд╕рдорд╛рдпреЛрдЬрди


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗрдЯрдЕрдк рдЖрд╡рд╢реНрдпрдХ рд╣реИред


рдЕрдкрдиреЗ Android рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рдШрдЯрдХреЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдЖрдкрдХреЛ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ 3.2 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдиреАрдЪреЗ рдЖрд╡рд╢реНрдпрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪрд░рдг рд╣реИрдВред


1. Google рдорд╛рд╡реЗрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ build.gradle рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред


 allprojects { repositories { jcenter() maven { url "https://maven.google.com" } } } 

2. build.gradle рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝реЗрдВред рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


 implementation 'com.google.android.material:material:1.0.0-alpha1' 

compileSdkVersion рд░реВрдк рдореЗрдВ compileSdkVersion рдФрд░ Android P рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдПрдкреАрдЖрдИ рд╕рдВрд╕реНрдХрд░рдг (рдпрд╛рдиреА 28 рдФрд░ рдКрдкрд░) рдХреЛ compileSdkVersion ред


compileSdkVersion рдФрд░ targetSdkVersion


4. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди Theme.MaterialCompords рдереАрдо рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдмреЙрдЯрдордРрдкрдмрд╛рд░ рдирд╡реАрдирддрдо рд╢реИрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд▓реЗрдЖрдЙрдЯ рдПрдХреНрд╕рдПрдордПрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд┐рдЬреЗрдЯ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп рдиреАрдЪреЗ рдХреА рдУрд░ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 style=тАЭ@style/Widget.MaterialComponents.BottomAppBarтАЭ 

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдЖрдк рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЕрдкрдиреЗ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдПрдХ рдмреЙрдЯрдордРрдкрдмрд╛рд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреЙрдЯрдордРрдкрдмрд┐рдпрд░ рдХреЛрдСрд░реНрдбрд┐рдиреЗрдЯрд░ рд▓рдпрдЖрдЙрдЯ рдХрд╛ рдмрдЪреНрдЪрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


 <com.google.android.material.bottomappbar.BottomAppBar android:id="@+id/bottom_app_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" app:backgroundTint="@color/colorPrimary" app:fabAlignmentMode="center" app:fabAttached="true" app:navigationIcon="@drawable/baseline_menu_white_24"/> 

BottomAppBar


app:layout_anchor рдореЗрдВ рдмреЙрдЯрдордРрдкрдмрд╛рд░ рддрддреНрд╡ рдХреА id рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдЖрдк рдПрдлрдПрдмреА рдХреЛ рдмреЙрдЯрдордРрдкрдмрд╛рд░ рдореЗрдВ рдмрд╛рдВрдз рд╕рдХрддреЗ рд╣реИрдВ app:layout_anchor рдПрдлрдПрдмреА рддрддреНрд╡ рдХрд╛ app:layout_anchor рд╡рд┐рд╢реЗрд╖рддрд╛ред рдмреЙрдЯрдордРрдкрдмрд╛рд░ рдПрдлрдПрдмреА рдХреЛ рдХрд╡рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдПрдлрдПрдмреА рдмреЙрдЯрдордРрдкрдмрд╛рд░ рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд░ рд╕рдХрддрд╛ рд╣реИред


 <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/baseline_add_white_24" app:layout_anchor="@id/bottom_app_bar" /> 

рдмреЙрдЯрдордРрдкрдмрд╛рд░ рдПрдлрдПрдмреА рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ


рдмреЙрдЯрдордРрдкрдмрд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ


рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдмреЙрдЯрдордРрдкрдмрд╛рд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИред


рдмреЙрдЯрдордРрдкрдмрд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ


backgroundTint


рдпрд╣ рдмреЙрдЯрдордРрдкрдмрд╛рд░ рдХрд╛ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХрд▓рд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред


fabAlignmentMode


рд╡рд┐рд╢реЗрд╖рддрд╛ FAB (рдпрд╛ рддреЛ рдХреЗрдВрджреНрд░ рдореЗрдВ рдпрд╛ рдмреЙрдЯрдордРрдкрдмрд╛рд░ рдХреЗ рдЕрдВрдд рдореЗрдВ) рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИред рдмреЙрдЯрдордРрдкрдмрд╛рд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдлрдПрдмреА рдЕрд▓рд╛рдЗрдирдореЗрдВрдЯ рд╣реИред


fabAlignmentMode: рдЕрдВрдд


fabAttached


рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ FAB рдХреЛ рдмреЙрдЯрдордРрдкрдмрд╛рд░ рдореЗрдВ рдмрд╛рдБрдзрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдЪ рдпрд╛ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдордЯреЗрд░рд┐рдпрд▓ рдбрд┐рдЬрд╝рд╛рдЗрди рдЧрд╛рдЗрдб , рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдмрд╛рдкрд░ рдХреЗ рдмрд╛рд╣рд░ рдлреИрдм рд░рдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд╣рд╛рдВ fabAttached рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред


fabAlignmentMode: рдЕрдВрдд, fabAttached: false


fabCradleDiameter


FAB рдпреБрдХреНрдд "рдкрд╛рд▓рдирд╛" рдХреЗ рд╡реНрдпрд╛рд╕ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред


"рдкрд╛рд▓рдиреЗ" рдХрд╛ рд╡реНрдпрд╛рд╕


fabCradleRoundedCornerRadius


"рдкрд╛рд▓рдирд╛" рдХреЗ рдмреИрдардХ рдмрд┐рдВрджреБ рдкрд░ рдХреЛрдиреЗ рдХреЗ рддреНрд░рд┐рдЬреНрдпрд╛ рдФрд░ рдмреЙрдЯрдордРрдкрдмрд╛рд░ рдХреЗ рдХреНрд╖реИрддрд┐рдЬ рднрд╛рдЧ рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред


"рдкрд╛рд▓рдирд╛" рдХреЗ рдХреЛрдг рдХреА рддреНрд░рд┐рдЬреНрдпрд╛


fabCradleVerticalOffset


рдиреАрдЪреЗ рд╕реЗ рдкрд╛рд▓рдирд╛ рдСрдлрд╕реЗрдЯ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред


рдХреНрд░реИрдбрд▓ рдСрдлрд╕реЗрдЯ


рдпрд╣рд╛рдВ рд╕рдВрдкреВрд░реНрдг рд▓реЗрдЖрдЙрдЯ XML рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


 <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <androidx.coordinatorlayout.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.material.bottomappbar.BottomAppBar android:id="@+id/bottom_app_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" app:backgroundTint="@color/colorPrimary" app:fabAlignmentMode="center" app:fabAttached="true" app:navigationIcon="@drawable/baseline_menu_white_24"/> <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/baseline_add_white_24" app:layout_anchor="@id/bottom_app_bar" /> </androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.constraintlayout.widget.ConstraintLayout> 

рд╣рдордиреЗ рдирдП рдПрдВрдбреНрд░реЙрдЗрдб рдордЯреЗрд░рд┐рдпрд▓ рдХрдВрдкреЛрдиреЗрдВрдЯ - рдмреЙрдЯрдордРрдкрдмрд╛рд░ рдХреЗ рдмреЗрд╕рд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдирдП рдПрдлрдПрдмреА рдлреАрдЪрд░реНрд╕ рдХрд╛ рднреА рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ред рдмреЙрдЯрдордРрдкрдмрд╛рд░ рд╡рд┐рдЬреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдЯреВрд▓рдмрд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред


рдЗрд╕ рдмреЙрдЯрдордРрдкрдмрд╛рд░ рд╕реАрд░реАрдЬрд╝ рдХреЗ рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рдордЯреАрд░рд┐рдпрд▓ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдореЗрдиреНрдпреВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдмреЙрдЯрдордмреИрд░ рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


тЖТ рдмреЙрдЯрдордРрдкрдмрд╛рд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рднрд╛рдЧ 2: рдореЗрдиреВ рдФрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рджрд░рд╛рдЬ рдирд┐рдпрдВрддреНрд░рдг
тЖТ рдмреЙрдЯрдордРрдкрдмрд╛рд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рднрд╛рдЧ 3: Android рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░

Source: https://habr.com/ru/post/hi421879/


All Articles