
рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░!
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо
рдкрд╣рд▓реЗ рднрд╛рдЧ рд╕реЗ рд▓реЗрдЖрдЙрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдХреНрд░реАрди рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рд╕реНрдХреНрд░реАрди рд▓реЗрдЖрдЙрдЯ
рд╣реЛрдо рд╕реНрдХреНрд░реАрди
рдореБрдЦреНрдп рд╕реНрдХреНрд░реАрди рдореЗрдВ рдЯреБрдХрдбрд╝реЗ рдФрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдореЗрдиреВ рд╣реЛрдВрдЧреЗред рдЖрдЗрдХрдиреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрдиреВ рд▓рд┐рдЦреЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рдбреНрд░рд╛ рдХрд░рдиреЗ
рдпреЛрдЧреНрдп рдлрд╝реЛрд▓реНрдбрд░ рдЦреЛрд▓реЗрдВ,
рдирдпрд╛ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░
рд╡реЗрдХреНрдЯрд░ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдВрдбреЛ рдореЗрдВ,
рдХреНрд▓рд┐рдк рдЖрд░реНрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ ,
рдЦреЛрдЬ рдФрд░
рд╕рд╛рдордЧреНрд░реА рдкреЗрд╕реНрдЯ рдЖрдЗрдХрди рдЪреБрдиреЗрдВ ред рд╕рд╛рдЗрдЬ 24 рдмрд╛рдп 24 рд╣реЛ рдЬрд╛рдПрдЧреАред
рдорд╛рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ рдФрд░ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ:
<resources> <string name="title_home">Home</string> <string name="title_search">Search</string> <string name="title_settings">Settings</string> </resources>
рдПрдХ рдлрд╛рдЗрд▓ рдореЗрдВ рд╕рднреА рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдбрд╛рд▓рдиреЗ рд╕реЗ рдЖрд╡реЗрджрди рдХреЗ рдЖрдЧреЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрджрд┐ рдЖрдк рджреВрд╕рд░реА рднрд╛рд╖рд╛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реВрд╕реА,
рд▓реЛрдХреЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ,
рднрд╛рд╖рд╛ рд╕реВрдЪреА рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рднрд╛рд╖рд╛ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрд╕реА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВред
рдЕрдм рд╣рдо рд╕реАрдзреЗ рдореЗрдиреВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред
рдореЗрдиреВ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ,
рдореЗрдиреВ рд░рд┐рд╕реЛрд░реНрд╕ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ "
bottom_nav_menu " рдирд╛рдо рджреЗрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/navigation_home" android:icon="@drawable/ic_content_paste_black_24dp" android:title="@string/title_home"/> <item android:id="@+id/navigation_search" android:icon="@drawable/ic_search_black_24dp" android:title="@string/title_search"/> <item android:id="@+id/navigation_settings" android:icon="@drawable/ic_settings_black_24dp" android:title="@string/title_settings"/> </menu>
рдорд╛рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ
рд╢реИрд▓реА рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ рдФрд░ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
<resources> <style name="MyLinearLayout"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">match_parent</item> <item name="android:orientation">vertical</item> </style> </resources>
рдирд┐рд░реНрдорд┐рдд рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдорд╛рд░реНрдХрдЕрдк рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рд╢реИрд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реНрд╡рд░реВрдкрдг рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рддрддреНрд╡реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рдорд╛рд░реНрдХрдЕрдк рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдпреЛрдЬрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд╕реНрдЯрд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдЖрд░рдПрдордмреА ->
рд░рд┐рдлреИрдХреНрдЯрд░ ->
рдПрдХреНрд╕рдЯреНрд░реИрдХреНрдЯ ->
рд╕реНрдЯрд╛рдЗрд▓ ред рд╢реИрд▓реА рдХреЗрд╡рд▓ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдЕрдВрджрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдпрд╣рд╛рдБ рдФрд░ рдкрдврд╝реЗрдВред
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЗрдЖрдЙрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдЖрдЙрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдПрдХ
рд▓реЗрдЖрдЙрдЯ рд░рд┐рд╕реЛрд░реНрд╕ рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ "
рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА_рдореИрди " рдирд╛рдо рджреЗрдВ рдФрд░ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout 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" tools:context=".MainActivity" style="@style/MyLinearLayout"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/fragment_container" android:layout_marginBottom="?attr/actionBarSize" /> <android.support.design.widget.BottomNavigationView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/nav_view" app:menu="@menu/bottom_nav_menu" android:background="#6986c2" android:layout_gravity="bottom"/> </FrameLayout>
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХреНрдпрд╛ рд╣реБрдЖред

рд╣реЛрдо рдЯреИрдм рд╕реНрдХреНрд░реАрди
рд╕реНрдЯрд╛рдЗрд▓ рдлрд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдЯреВрд▓рдмрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ TextView рдФрд░ RecyclerView рдХреЗ рд╕рд╛рде рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ:
<style name="MyToolbar"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:background">#6986c2</item> </style> <style name="Toolbar_TextView"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">match_parent</item> <item name="android:gravity">center</item> </style> <style name="MyRecyclerView"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">match_parent</item> <item name="android:background">#fff</item> </style>
рддрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ:
<string name="desc_home">Notification list</string> <string name="movie_title">Movie title</string> <string name="default_imdb_rating">IMDb rating: 7,4</string>
рдЕрдм "
fragment_home " рдирд╛рдордХ рдПрдХ
рд▓реЗрдЖрдЙрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/MyLinearLayout"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar_home" style="@style/MyToolbar"> <TextView android:text="@string/desc_home" style="@style/Toolbar_TextView"/> </android.support.v7.widget.Toolbar> <android.support.v7.widget.RecyclerView android:id="@+id/recView_home" style="@style/MyRecyclerView"/> </LinearLayout>
рдбреНрд░рд╛ рдХрд░рдиреЗ
рдпреЛрдЧреНрдп рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ
рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдФрд░
рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЛрдИ рднреА рдЪрд┐рд╣реНрди
рдирд╣реАрдВ рдЬреЛрдбрд╝реЗрдВред
рд╕реВрдЪреА рдЖрдЗрдЯрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдлрд╝рд╛рдЗрд▓ "
item_movie " рдХреЛ
рд▓реЗрдЖрдЙрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рд▓рд┐рдЦреЗрдВ:
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView 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="120dp" app:cardCornerRadius="16dp" android:layout_marginLeft="16dp" android:layout_marginTop="8dp" android:layout_marginRight="16dp" android:layout_marginBottom="8dp" app:cardBackgroundColor="#00FFFFFF"> <ImageView android:layout_width="98dp" android:layout_height="98dp" app:srcCompat="@mipmap/ic_launcher" android:id="@+id/item_image" android:layout_gravity="center|start" android:layout_marginLeft="10dp"/> <TextView android:text="@string/movie_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/item_title" android:layout_marginTop="18dp" android:layout_marginLeft="120dp" android:textStyle="bold" android:textColor="@android:color/black" android:ellipsize="end" android:maxLines="1" android:layout_marginRight="16dp"/> <TextView android:text="@string/default_imdb_rating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/item_rating" android:layout_marginLeft="120dp" android:layout_marginTop="50dp"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" app:srcCompat="@drawable/ic_notifications_black_24dp" android:id="@+id/item_notification" android:layout_gravity="bottom|right" android:layout_marginRight="16dp" android:layout_marginBottom="16dp" tools:ignore="VectorDrawableCompat"/> </android.support.v7.widget.CardView>
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдкрд░рд┐рдгрд╛рдо:

рдЯреИрдм рд╕реНрдХреНрд░реАрди рдЦреЛрдЬреЗрдВ
рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЯреВрд▓рдмрд╛рд░ рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдЬреЛрдбрд╝реЗрдВ:
<string name="desc_settings">Preferences</string>
рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдмреНрд▓реЙрдХ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реБрдП, "
fragment_search " рдирд╛рдордХ рдПрдХ
рд▓реЗрдЖрдЙрдЯ рдмрдирд╛рдПрдВ:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/MyLinearLayout"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar_search" style="@style/MyToolbar"> <android.support.v7.widget.SearchView android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/border_search_view" android:layout_marginRight="15dp" android:id="@+id/search_view"/> </android.support.v7.widget.Toolbar> <android.support.v7.widget.RecyclerView android:id="@+id/recView_search" style="@style/MyRecyclerView"/> </LinearLayout>
рдЖрдЗрдП рджреЗрдЦреЗрдВ рд░рд┐рдЬрд▓реНрдЯ:

рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЯреИрдм рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрди
рдпрд╣ рд╕реНрдХреНрд░реАрди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЪрдордХрджрд╛рд░ рдирд┐рдХрд▓рд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рджреЛрд╣рд░рд╛рдИ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╢реИрд▓рд┐рдпрд╛рдБ рд╣реИрдВред
TextView рдФрд░ CardView рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ
рд╢реИрд▓реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
<style name="MyTextView"> <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">wrap_content</item> <item name="android:textStyle">bold</item> <item name="android:textColor">@android:color/black</item> <item name="android:layout_marginLeft">16dp</item> <item name="android:layout_marginTop">8dp</item> <item name="android:layout_marginBottom">8dp</item> <item name="android:typeface">normal</item> </style> <style name="MyCardView"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:layout_margin">16dp</item> </style>
рддрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрдЫ рдФрд░ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ:
<string name="imdb_rating">IMDb rating</string> <string name="default_rating">6</string> <string name="movie_genres">Movie genres</string>
рдЖрдкрдХреЛ
рдбреНрд░реЙ рдХрд░рдиреЗ
рдпреЛрдЧреНрдп рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ
рд╕реНрдЯрд╛рд░ рдмреЙрд░реНрдбрд░ рдЖрдЗрдХрди рднреА рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
"
Fragment_settings " рдирд╛рдордХ рдПрдХ
рд▓реЗрдЖрдЙрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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" style="@style/MyLinearLayout" android:background="#fff"> <android.support.v7.widget.Toolbar style="@style/MyToolbar" android:id="@+id/toolbar_home" app:title="@string/desc_home"> <TextView android:text="@string/desc_settings" style="@style/Toolbar_TextView"/> </android.support.v7.widget.Toolbar> <android.support.v7.widget.CardView app:cardCornerRadius="16dp" app:cardBackgroundColor="#00FFFFFF" style="@style/MyCardView"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" app:srcCompat="@drawable/ic_star_border_black_24dp" android:layout_gravity="right" android:layout_marginRight="50dp" android:layout_marginTop="8dp" tools:ignore="VectorDrawableCompat"/> <TextView android:text="@string/default_rating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/rating_value" android:layout_gravity="right" android:layout_marginRight="40dp" android:layout_marginTop="8dp" android:textColor="#666666"/> <TextView android:text="@string/imdb_rating" android:id="@+id/textView" style="@style/MyTextView"/> <SeekBar style="@style/Widget.AppCompat.SeekBar.Discrete" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="10" android:progress="6" android:id="@+id/seek_bar" android:layout_marginLeft="16dp" android:layout_marginTop="50dp" android:layout_marginBottom="20dp" android:layout_marginRight="16dp"/> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView app:cardCornerRadius="16dp" app:cardBackgroundColor="#00FFFFFF" style="@style/MyCardView"> <TextView android:text="@string/movie_genres" style="@style/MyTextView"/> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00FFFFFF" android:layout_marginLeft="16dp" android:layout_marginTop="36dp" android:layout_marginBottom="16dp" android:layout_marginRight="16dp" android:id="@+id/recView_settings"/> </android.support.v7.widget.CardView> </LinearLayout>
рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдЗрдЯрдо рдмрдирд╛рдПрдБред рдлрд╝рд╛рдЗрд▓ "
item_genre " рдХреЛ
рд▓реЗрдЖрдЙрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рд┐рдЦреЗрдВ:
<?xml version="1.0" encoding="utf-8"?> <CheckBox xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:text="@string/movie_genres" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/item_check_box" />
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдкрд░рд┐рдгрд╛рдо:

рдбрд┐рдЬрд╛рдЗрди рдкрд░реАрдХреНрд╖рдг
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╕реНрдХреНрд░реАрди рдХреЗ рдПрдХ рд╣реА рдЦрдВрдб рдХреЛ рдХрд┐рддрдиреА рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рд░рдВрдЧ рдиреАрд▓рд╛ - redraws рдПрдХ рдмрд╛рд░ред рд╕рдм рдареАрдХ рд╣реИред
рд░рдВрдЧ рд╣рд░рд╛ - рджреЛ рдмрд╛рд░ redrawsред рдЕрдиреБрдХреВрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд░рдВрдЧ рд╣рд▓реНрдХрд╛ рд▓рд╛рд▓ -
рддреАрди рдмрд╛рд░ рд▓рд╛рд▓ред рдмрд╣реБрдд рдмреБрд░рд╛ред
рд▓рд╛рд▓ рд░рдВрдЧ -
4 рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ redrawsред рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рдЧрдИред
рдФрд░ рдЕрдЧрд░ рдХреБрдЫ рднреА рдЪрд┐рддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рднреВрдЦрдВрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо рд╣реИред
рджреВрд╕рд░реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдкрд░ рд╕рдм рдХреБрдЫ рд▓рд╛рд▓ рдХреНрдпреЛрдВ рд╣реИ? рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдЖрдЙрдЯ, RecyclerView рдФрд░ CardView рдореЗрдВ рдПрдХ рд╕рдлреЗрдж рдкреГрд╖реНрдарднреВрдорд┐ рдЬреЛрдбрд╝реА рдЧрдИ, рдЬрд┐рд╕рд╕реЗ рдкрд░рддреЗрдВ рдУрд╡рд░рд▓реИрдк рд╣реЛ рдЧрдИрдВред рдпрд╣ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдбрд┐рдЬрд╝рд╛рдЗрди рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗрд╡рд▓ рд╕реНрдЯрд╛рдЗрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдЕрд╕рдлрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдкрд╣рд▓реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ, рдШрд░ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ LinearLayout, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ redrawing рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
window.setBackgroundDrawable(null)
рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдлреНрд░реЗрдо рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред
рджреГрд╢реНрдп рдмрдирд╛рдиреЗ рдФрд░ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕рд┐рдпрд╛рди рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
рдмреИрдВрдЧрдиреА рднрд╛рдЧ рдзрд╛рд░рд╛ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
рд▓рд╛рд▓ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
рдПрдХ рдирд╛рд░рдВрдЧреА рд░рдВрдЧ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдиреЗ рдЕрдкрдирд╛ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП GPU рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рд┐рдпрд╛ред рдпрд╣ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реНрд░реЛрдд рд╣реИред - рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ рдХреНрд▓рд┐рдореЛрд╡
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓рдЧрднрдЧ рд╕рднреА рдЯреИрдм 16ms рд╕реЗ рдХрдо рдореЗрдВ рдЦреАрдВрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рд╣рд░реЗ рд░рдВрдЧ рдХреА рдкрдЯреНрдЯреА рдХреЗ рдиреАрдЪреЗред рдпрджрд┐ рдмрд╛рд░ рдЗрд╕ рд░реЗрдЦрд╛ рд╕реЗ рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдзреАрдорд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЬрдм рд▓реЗрдЦрдХ рдЗрд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдХреЛрдИ рдмрд┐рдВрджреБ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВред
рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбрд┐рдЬрд╝рд╛рдЗрди (XML) рдХреЛ рд╕рд░рд▓ рдпрд╛ рдмреЗрд╣рддрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреЗрдВред