<\/span><\/h3>\n\n\n\n\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c Fragment + ViewModel<\/strong> \u0438 \u043d\u0430\u0436\u0430\u0442\u044c Next<\/strong>.<\/p>\n\n\n\n
<\/figure>\n\n\n\n\u0414\u0430\u043b\u0435\u0435 \u0432 \u043f\u043e\u043b\u0435 Name<\/strong> \u0432\u0432\u043e\u0434\u0438\u0442\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432 Package name<\/strong> \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043d\u0435\u0441\u0442\u0438 \u0441\u0432\u043e\u0435 \u0438\u043c\u044f \u0438\u043b\u0438 \u043d\u0438\u043a \u043a\u0430\u043a \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f, \u043d\u043e \u0441 \u0437\u0430\u0434\u0430 \u043d\u0430 \u043f\u0435\u0440\u0435\u0434. \u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u043c\u0430\u0440\u043a\u0435\u0442\u0435 \u0438 \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435. \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a\u0430\u043a \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435. \u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c Finish \u0438 \u0436\u0434\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u043e\u0431\u0435\u0440\u0435\u0442\u0441\u044f \u0438 \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n\n\n\n
<\/figure>\n\n\n\n\u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u043c \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0432 build.gradle<\/strong> \u043c\u043e\u0434\u0443\u043b\u044f \u0432 \u0440\u0430\u0437\u0434\u0435\u043b dependencies<\/strong>. \u0410 \u0442\u0430\u043a \u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c viewBinding<\/strong> \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0443\u0434\u043e\u0431\u043d\u0430 \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u044c \u0432\u0435\u0440\u0441\u0442\u043a\u0438 \u0441 \u043a\u043e\u0434\u043e\u043c (\u0441\u043c\u043e\u0442\u0440\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435)<\/p>\n\n\n\nandroid {\n\u2026\n buildFeatures {\n viewBinding true\n }\n\n}\n\ndependencies {\n\u2026\n\n implementation \"androidx.lifecycle:lifecycle-livedata-ktx:2.2.0\"\n implementation \"androidx.lifecycle:lifecycle-extensions:2.2.0\"\n implementation \"androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0\"\n implementation \"androidx.gridlayout:gridlayout:1.0.0\"\n\n implementation \"androidx.fragment:fragment-ktx:1.3.0\"\n}<\/code><\/pre>\n\n\n\n
<\/figure>\n\n\n\n<\/span>\u0412\u0435\u0440\u0441\u0442\u043a\u0430 \u044d\u043a\u0440\u0430\u043d\u0430<\/span><\/h3>\n\n\n\n\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0432\u0435\u0440\u0441\u0442\u0430\u043d\u0438\u044e \u044d\u043a\u0440\u0430\u043d\u0430. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u044c\u044e\u0448\u0435\u043a. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u044c\u044e\u0448\u043a\u0435 \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f\u044b \u043e\u0442 \u043a\u0440\u0430\u044f \u044d\u043a\u0440\u0430\u043d\u0430, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u043c `Guideline<\/strong>`. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0433\u0440\u0430\u043d\u0438\u0446\u044b, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u00ab\u0446\u0435\u043f\u043b\u044f\u0442\u044c\u0441\u044f\u00bb \u0432\u044c\u044e\u0448\u043a\u0438. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u044d\u043a\u0440\u0430\u043d \u043e\u0442\u043a\u0440\u044b\u043b\u0441\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 `Design<\/strong>`, \u0442\u043e \u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u0440\u0435\u0436\u0438\u043c `Split<\/strong>`. \u0422\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u043c\u043d\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c \u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b. \u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c Guideline<\/strong> \u043c\u043e\u0436\u043d\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 `ConstraintLayout<\/strong>` \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c `<guideline<\/strong>` \u0438 \u0441\u0442\u0443\u0434\u0438\u044f \u043f\u043e\u0434\u0441\u043a\u0430\u0436\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0439 \u043d\u0430\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u0418\u043b\u0438 \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 `Guidelines<\/strong>` \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043b\u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 guideline. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439. \u0423 \u043d\u0430\u0441 \u043d\u0430 \u043c\u0430\u043a\u0435\u0442\u0435 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u043f\u0440\u0430\u0432\u0430 \u043f\u043e\u043b\u043e\u0441\u0430. \u041f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 Gidline,<\/strong> \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0432 \u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u0432 3 \u0440\u0430\u0437\u0430. \u0412 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 android:id<\/code> \u043d\u0430\u043f\u0438\u0448\u0435\u043c @+id\/<\/code> \u043f\u043b\u044e\u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f (start, end, top, bottom). \u0412 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 android:orientation<\/code> \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c vertical\/horizontal \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u0438\u043d\u0438\u0438. \u0418 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 app:layout_constraintGuide_begin<\/strong><\/code> \u043d\u0430 app:layout_constraintGuide_end<\/strong><\/code> \u0434\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 id=end\/bottom<\/code>.<\/p>\n\n\n\n
<\/figure>\n\n\n\n\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u0447\u0435\u0439 \u0441\u0435\u0439\u0447\u0430\u0441 \u0445\u043e\u0434 \u0425<\/strong> \u0438\u043b\u0438 \u041e<\/strong>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c 3 ImageView<\/strong>. \u041d\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0430\u043c\u0438 \u0438\u043a\u043e\u043d\u043a\u0438 \u0425<\/strong> \u0438 \u041e<\/strong>, \u0430 \u0442\u0430\u043a \u0436\u0435 \u00df \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0447\u0435\u0439 \u0445\u043e\u0434.<\/p>\n\n\n\n\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043f\u0440\u0430\u0432\u0430 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 project \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 (\u041f\u041a\u041c) \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 New \u2192 Vector Asset.<\/p>\n\n\n\n
<\/figure>\n\n\n\n\u0412 \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u043e\u043a\u043d\u0435 \u0449\u0435\u043b\u043a\u043d\u0443\u0442\u044c \u043f\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u0432 \u043f\u0443\u043d\u043a\u0442\u0435 Clip Art,<\/strong> \u043d\u0430\u0439\u0442\u0438 \u043f\u043e \u043f\u043e\u0438\u0441\u043a\u0443 back<\/strong> \u0441\u0442\u0440\u0435\u043b\u043a\u0443 \u043d\u0430\u0437\u0430\u0434 \u0438 \u043d\u0430\u0436\u0430\u0442\u044c OK<\/strong>. \u042f \u0432\u044b\u0431\u0440\u0430\u043b, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043d\u0446\u044b \u0431\u044b\u043b\u0438 \u0441\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u043d\u044b\u043c\u0438, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0435\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c Round<\/strong>. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0432\u0448\u0438\u0439\u0441\u044f. \u0420\u0430\u0437\u043c\u0435\u0440 \u044f \u0437\u0430\u0434\u0430\u043b 64<\/strong> \u0432 \u043f\u0443\u043d\u043a\u0442\u0435 Size<\/strong>, \u0430 \u0446\u0432\u0435\u0442 \u0432 Color<\/strong>: F44336. \u0412\u044b \u0436\u0435 \u0432 \u043f\u0430\u043b\u0438\u0442\u0440\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0442\u043e\u0442 \u0446\u0432\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0412\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0432 \u043f\u0443\u043d\u043a\u0442\u0435 Name<\/strong> \u044f \u0443\u043a\u0430\u0437\u0430\u043b ic_arrow<\/strong>, \u0447\u0442\u043e\u0431 \u043f\u0440\u043e\u0449\u0435 \u0431\u044b\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u0414\u043b\u044f \u0438\u043a\u043e\u043d\u043e\u043a, \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0441 ic_<\/code><\/strong> \u0438 \u0432 snake case, \u0442.\u0435. \u0441 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435\u043c. \u0418 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c Next \u2192 Finish<\/strong>. \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u043a\u0440\u0435\u0441\u0442\u0438\u043a \u0438 \u043d\u043e\u043b\u0438\u043a. \u0414\u043b\u044f \u043d\u0438\u0445 \u044f \u0432\u044b\u0431\u0440\u0430\u043b \u0438\u043a\u043e\u043d\u043a\u0443 close<\/strong> \u0438 panorama fish eye<\/strong> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 \u0432\u044b\u0431\u0440\u0430\u043b \u0446\u0432\u0435\u0442 454FCE<\/strong>, \u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043b ic_cross<\/strong> \u0438 ic_circle<\/strong>.<\/p>\n\n\n\n
<\/figure>\n\n\n\n\u041f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 res \u2192 drawable<\/strong> \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u0438\u043a\u043e\u043d\u043a\u0430\u043c\u0438. \u042f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u0430 \u0438\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 android:tint<\/code><\/strong> \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 android:fillColor<\/code><\/strong>, \u0430 \u0441\u0430\u043c tint<\/strong> \u0443\u0434\u0430\u043b\u0438\u0442\u044c. \u041d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0445 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u0445, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u0435\u0434\u0435\u0442 \u0441\u0435\u0431\u044f \u043d\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043a\u043e\u043d\u043a\u0438 \u0443\u0445\u0443\u0434\u0448\u0430\u0435\u0442\u0441\u044f.<\/p>\n\n\n\n
<\/figure>\n\n\n\n\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u0432\u0435\u0440\u0441\u0442\u043a\u0435 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c 3 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 ImageView<\/strong>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u0440\u0435\u0436\u0438\u043c Design<\/strong> (\u044d\u0442\u043e \u043a\u0430\u043a \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0432\u0435\u0440\u0441\u0442\u0430\u043d\u0438\u044f \u044d\u043a\u0440\u0430\u043d\u0430), \u043d\u0430\u0439\u0434\u0435\u043c ImageView<\/strong> \u0438 \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u043c \u0435\u0433\u043e \u043d\u0430 \u043c\u0430\u043a\u0435\u0442. \u0412 \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u044d\u043a\u0440\u0430\u043d\u0435 \u0432\u044b\u0431\u0435\u0440\u0435\u043c \u0438\u043a\u043e\u043d\u043a\u0443 ic<\/strong>_<\/strong>cross<\/strong>. \u0412 \u043f\u043e\u043b\u0435 id<\/strong> \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 cross<\/strong>. \u0422\u0430\u043a\u0438\u043c \u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u043c \u0435\u0449\u0435 2 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f ic<\/strong>_<\/strong>arrow<\/strong> \u0438 ic<\/strong>_<\/strong>circle<\/strong> \u0438 \u0434\u0430\u0434\u0438\u043c \u0438\u043c \u0438\u043c\u044f id direction<\/strong> \u0438 circle<\/strong> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u0434\u0435\u043b\u0438\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u043e\u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e \u0438 \u043f\u043e\u0442\u044f\u043d\u0443\u0432 \u0437\u0430 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043a\u0440\u0443\u0433 \u0441\u0432\u044f\u0436\u0435\u043c \u0432\u044c\u044e\u0448\u043a\u0443 \u0441 \u0432\u0435\u0440\u0445\u043d\u0438\u043c guideline<\/strong>.<\/p>\n\n\n\n
<\/figure>\n\n\n\n\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0438\u0437 \u043d\u0438\u0445 \u0446\u0435\u043f\u043e\u0447\u043a\u0443, \u0447\u0442\u043e\u0431 \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u043f\u043e\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 \u0438 \u0441\u043a\u043b\u0435\u0435\u043d\u044b \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u044d\u0442\u0438 3 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432\u044b\u0448\u043a\u043e\u0439, \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u041f\u041a\u041c \u2192 Chains \u2192 Create Horizontal Chain<\/strong>.<\/p>\n\n\n\n
<\/figure>\n\n\n\n\u0417\u0430\u0442\u0435\u043c \u0441\u043d\u043e\u0432\u0430 \u041f\u041a\u041c \u2192 Chains \u2192 Horizontal Chain Style \u2192 packed<\/strong>. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0442\u0438\u043b\u0438 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u0447\u0435\u043c \u043e\u043d\u0438 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430.<\/p>\n\n\n\n
<\/figure>\n\n\n\n\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u043d\u0438 \u0441\u043a\u043b\u0435\u0438\u043b\u0438\u0441\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u043e\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435, \u043a\u0430\u043a \u044f \u0438 \u0445\u043e\u0442\u0435\u043b.<\/p>\n\n\n\n
\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 Barrier<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0434\u0440\u0443\u0433\u0438\u0445, \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439. \u041d\u0430\u0436\u043c\u0435\u043c \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 Guidelines \u2192 Add Horizontal Barrier<\/strong>.<\/p>\n\n\n\n
<\/figure>\n\n\n\n\u0418 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n\n\n\n
<androidx.constraintlayout.widget.Barrier\n android:id=\"@+id\/barrier\"\n android:layout_width=\"wrap_content\"\n android:layout_height=\"wrap_content\"\n app:barrierDirection=\"bottom\"\n app:constraint_referenced_ids=\"circle,cross,direction\" \/>\n<\/code><\/pre>\n\n\n\n\u0423 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u044d\u0442\u043e\u0433\u043e.<\/p>\n\n\n\n
<\/figure>\n\n\n\n\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u0435\u0440\u0441\u0442\u043a\u0438 \u044d\u0442\u043e GridLayout<\/strong>. \u041d\u043e \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438\u0437 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c androidx.gridlayout.widget.GridLayout<\/strong>. \u0415\u0433\u043e \u0443\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/p>\n\n\n\n<androidx.gridlayout.widget.GridLayout\n android:id=\"@+id\/field\"\n android:layout_width=\"0dp\"\n android:layout_height=\"0dp\"\n app:columnCount=\"3\"\n app:layout_constraintBottom_toBottomOf=\"@id\/bottom\"\n app:layout_constraintDimensionRatio=\"1:1\"\n app:layout_constraintEnd_toEndOf=\"@id\/end\"\n app:layout_constraintStart_toStartOf=\"@id\/start\"\n app:layout_constraintTop_toTopOf=\"@id\/barrier\"\n app:rowCount=\"3\">\n\n<\/androidx.gridlayout.widget.GridLayout>\n<\/code><\/pre>\n\n\n\n\u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b app:columnCount<\/code><\/strong> \u0438 app:rowCount<\/code><\/strong> \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0437\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0438 \u0441\u0442\u0440\u043e\u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 3, \u0442.\u043a. \u043f\u043e\u043b\u0435 \u0443 \u043d\u0430\u0441 3\u04453. \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b app:layout_constraintDimensionRatio<\/code><\/strong> \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0431\u044b \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b \u043a\u0432\u0430\u0434\u0440\u0430\u0442 \u043d\u0443\u0436\u043d\u043e \u0435\u0433\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 1:1<\/strong>, \u0432\u043e\u0442 \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0442.\u043a. \u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 Android 5<\/strong> \u044d\u0442\u043e\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0418 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c android:layout_width<\/code><\/strong> \u0438 android:layout_height<\/code><\/strong> \u0432 0dp<\/strong>. \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b app:layout_constraintXXX_toXXX<\/code><\/strong> \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0437\u0430 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443 \u043d\u0430\u0448\u0435\u0439 \u0432\u044c\u044e\u0448\u043a\u0438 \u043a \u0434\u0440\u0443\u0433\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c. \u041d\u0443 \u0438 \u0437\u0430\u043f\u0438\u0448\u0435\u043c id=\"@+id\/field\"<\/code><\/strong>, \u0430 \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c ImageView<\/strong>. \u041d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u0445 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f 9 \u0448\u0442\u0443\u043a \u0438 \u0447\u0442\u043e\u0431\u044b \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u044c\u044e\u0448\u043a\u0435 \u043d\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0442\u0438\u043b\u044c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0449\u0435\u043b\u043a\u0430\u0435\u043c \u041f\u041a\u041c \u043f\u043e values \u2192 New \u2192 Values Resource File<\/strong>. <\/p>\n\n\n\n
<\/figure>\n\n\n\n \u0412 \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u043e\u043a\u043d\u0435, \u0432 \u043f\u043e\u043b\u0435 File name<\/strong> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c styles <\/strong>\u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c OK<\/strong>. \u0412 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c:<\/p>\n\n\n\n<resources>\n <style name=\"CellStyle\">\n <item name=\"layout_rowWeight\">1<\/item>\n <item name=\"layout_columnWeight\">1<\/item>\n <item name=\"android:background\">?android:attr\/selectableItemBackground<\/item>\n <item name=\"android:layout_width\">0dp<\/item>\n <item name=\"android:layout_height\">0dp<\/item>\n <item name=\"android:adjustViewBounds\">true<\/item>\n <\/style>\n\n<\/resources>\n<\/code><\/pre>\n\n\n\n\u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b layout_columnWeight<\/code><\/strong> \u0438 layout_rowWeight<\/code><\/strong> \u0441\u043b\u0443\u0436\u0430\u0442 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432\u0435\u0441\u043e\u0432 \u0432\u044c\u044e\u0448\u0435\u043a \u0438 \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u0440\u0430\u0432\u043d\u044b\u043c\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u043b\u0438\u0441\u044c \u043f\u043e \u0448\u0438\u0440\u0438\u043d\u0435 \u0438 \u0432\u044b\u0441\u043e\u0442\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u0438 \u0432\u0435\u0441\u0430 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e android:layout_width<\/code><\/strong> \u0438 android:layout_height<\/code><\/strong> \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 0dp<\/strong>. \u0410 \u0432 android:background<\/code><\/strong> \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0442\u0435\u043c\u044b \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043d\u0430 \u0432\u044c\u044e\u0448\u043a\u0443. \u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u0442\u0438\u043b\u044c \u043a \u043d\u0430\u0448\u0435\u0439 \u0432\u044c\u044e\u0448\u043a\u0435. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u043d\u0430\u0448\u0435\u0439 \u0432\u0435\u0440\u0441\u0442\u043a\u0435 \u0438 \u0443 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 ImageView<\/strong> \u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n\n\n\n<ImageView\n style=\"@style\/CellStyle\"\n tools:src=\"@drawable\/ic_cross\" \/>\n<\/code><\/pre>\n\n\n\nstyle=\"@style\/CellStyle\"<\/code><\/strong> \u2013 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430\u0448 \u0441\u0442\u0438\u043b\u044c \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u044c\u044e\u0448\u0435\u043a, \u0430 tools:src=\"@drawable\/ic_cross\"<\/code><\/strong> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043d\u0430 \u043c\u0430\u043a\u0435\u0442\u0435, \u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435, \u0442\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u041f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u043c \u044d\u0442\u043e\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0447\u0442\u043e\u0431\u044b \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u0447\u0435\u0442\u0435 \u0438\u0445 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c 9. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n\n\n\n
<\/figure>\n\n\n\n<\/span>\u0421\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0432\u0435\u0440\u0441\u0442\u043a\u0443 \u0441 \u043a\u043e\u0434\u043e\u043c (Binding)<\/span><\/h3>\n\n\n\n\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 MainFragment<\/strong> \u0438 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0441\u0442\u0443\u0434\u0438\u0435\u0439 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c binding<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0435\u0440\u0441\u0442\u043a\u0443 \u0441 \u043a\u043e\u0434\u043e\u043c.<\/p>\n\n\n\nprivate lateinit var binding: MainFragmentBinding\nprivate val viewModel: MainViewModel by viewModels()\n\noverride fun onCreateView(\n inflater: LayoutInflater, container: ViewGroup?,\n savedInstanceState: Bundle?\n): View {\n binding = MainFragmentBinding.inflate(inflater, container, false)\n return binding.root\n}\n<\/code><\/pre>\n\n\n\n\u0410 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u043c\u0435\u0442\u043e\u0434 onActivityCreated<\/strong> \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0434\u0430\u043b\u0438\u0442\u0435. \u0412\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u0443\u0434\u0438\u044f \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0435\u0442, \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a.<\/p>\n\n\n\n<\/span>\u041f\u0438\u0448\u0435\u043c \u043a\u043e\u0434<\/span><\/h3>\n\n\n\n\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u043a\u043b\u0430\u0441\u0441 MainViewModel<\/code><\/strong> \u0438 \u0443\u0431\u0435\u0440\u0435\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 TODO<\/strong>. \u041d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u044f\u0447\u0435\u0435\u043a (\u043f\u0443\u0441\u0442\u0430\u044f, \u043a\u0440\u0435\u0441\u0442\u0438\u043a, \u043d\u043e\u043b\u0438\u043a) \u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u044d\u0442\u0438\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432 Gridlayout \u0432\u0441\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u043c. \u0410 \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0442\u043e\u0433\u043e \u043a\u0442\u043e \u043f\u043e\u0431\u0435\u0434\u0438\u043b, \u0431\u0443\u0434\u0435\u043c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0432 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b [\u0441\u0442\u0440\u043e\u043a\u0430:\u043a\u043e\u043b\u043e\u043d\u043a\u0430]<\/strong>, \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0436\u0435.<\/p>\n\n\n\n\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c enum class<\/code><\/strong> \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u0412 \u043d\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u043d\u0435\u0439 \u043a\u043b\u0438\u043a\u0430\u0442\u044c, \u0432\u0435\u0434\u044c \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0443\u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0441\u0438\u043c\u0432\u043e\u043b \u0438\u043b\u0438 \u0438\u0433\u0440\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c, \u0442\u043e \u0443\u0436\u0435 \u043a\u043b\u0438\u043a\u0430\u0442\u044c \u043f\u043e \u044f\u0447\u0435\u0439\u043a\u0430\u043c \u043d\u0435\u043b\u044c\u0437\u044f. \u041d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0432 \u044d\u0442\u043e\u043c \u0436\u0435 \u0444\u0430\u0439\u043b\u0435 \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0438\u0437\u0443 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 `}`<\/strong>.<\/p>\n\n\n\nenum class CellState(@DrawableRes val icon: Int, val isClickable: Boolean) {\n None(0, true),\n Cross(R.drawable.ic_cross_anim, false),\n Circle(R.drawable.ic_circle_anim, false)\n}\n<\/code><\/pre>\n\n\n\n\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u043e\u043b\u0435 \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u044d\u0442\u0438\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439, \u044f \u043d\u0430\u0437\u043e\u0432\u0443 \u0435\u0435 matrix<\/strong> \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b. \u0422\u0430\u043a \u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u0442.\u0435. \u0447\u0435\u0439 \u0441\u0435\u0439\u0447\u0430\u0441 \u0445\u043e\u0434 \u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043c\u0435\u0442\u043e\u0434 initGame<\/code><\/strong> \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u0433\u0440\u044b \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (init<\/strong> \u2013 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 MainViewModel<\/code><\/strong>) \u0438 \u043f\u0440\u0438 \u0441\u0431\u0440\u043e\u0441\u0435 \u0438\u0433\u0440\u044b (onReloadClick<\/code><\/strong>).<\/p>\n\n\n\nclass MainViewModel : ViewModel() {\n\n private lateinit var matrix: Array<CellState>\n private lateinit var currentCellState: CellState\n\ninit {\n initGame()\n}\n\nprivate fun initGame() {\n matrix = Array<CellState>(9) { CellState.None }\n currentCellState = CellState.Cross\n}\n\nfun onReloadClick() {\n initGame()\n}\n\n}\n<\/code><\/pre>\n\n\n\n\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043c\u0435\u0442\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043b\u0438\u043a\u043e\u0432 \u043f\u043e \u044f\u0447\u0435\u0439\u043a\u0430\u043c \u0438 \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u043c \u0432 \u043d\u0435\u043c \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043c\u0435\u043d\u0443 \u0445\u043e\u0434\u0430 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u044f\u0447\u0435\u0439\u043a\u0438. \u0422\u0430\u043a \u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u043e\u043b\u0435 \u0441 LiveData<\/strong>, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043a\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0445\u043e\u0434\u0438\u0442.<\/p>\n\n\n\n\u2026\n private val mCurrentMove = MutableLiveData<CellState>()\n val currentMove: LiveData<CellState> = mCurrentMove\n \u2026\n\nprivate fun initGame() {\n \u2026\n mCurrentMove.value = currentCellState\n}\n\nfun onCellClick(index: Int) {\n matrix[index] = currentCellState\n\n currentCellState = if (currentCellState == CellState.Cross) CellState.Circle else CellState.Cross\n mCurrentMove.value = currentCellState\n}\n<\/code><\/pre>\n\n\n\n\u0417\u0434\u0435\u0441\u044c mCurrentMove<\/code><\/strong> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u043c \u0438 \u043e\u043d \u0437\u0430\u043a\u0440\u044b\u0442 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0438\u0437 \u0432\u043d\u0435 \u043a\u043b\u0430\u0441\u0441\u0430, \u0430 currentMove<\/code><\/strong> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u043c \u0438 \u043e\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n\n\n\n\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0434\u043f\u0438\u0448\u0435\u043c\u0441\u044f \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0445\u043e\u0434\u0430 \u0438 \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0447\u0435\u0439 \u0441\u0435\u0439\u0447\u0430\u0441 \u0445\u043e\u0434. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 MainFragment<\/code><\/strong>, \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043c\u0435\u0442\u043e\u0434 onViewCreated<\/code><\/strong> \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043d\u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435.<\/p>\n\n\n\n override fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n super.onViewCreated(view, savedInstanceState)\n\n binding.field.forEachIndexed { index, v ->\n v.setOnClickListener { viewModel.onCellClick(index) }\n }\n\n viewModel.currentMove.observe(viewLifecycleOwner) {\n binding.direction.animate()\n .rotation(if (it == CellState.Cross) 0f else 180f)\n\/\/ .scaleY(if (it == Mark.Cross) 1f else -1f)\n }\n }\n<\/code><\/pre>\n\n\n\nbinding.field.forEachIndexed<\/em><\/code> \u2013 \u043a \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u044c\u044e\u0448\u043a\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u0439\u0441\u044f \u0432 GridLayout<\/strong> \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043a\u043b\u0438\u043a.<\/p>\n\n\n\nbinding.direction<\/code> \u2013 \u044d\u0442\u043e \u043d\u0430\u0448\u0430 \u0441\u0442\u0440\u0435\u043b\u043e\u0447\u043a\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435. \u0421\u043e\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0435\u0433\u043e, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043a\u043b\u0438\u043a\u0430\u0435\u043c \u043f\u043e \u044f\u0447\u0435\u0439\u043a\u0430\u043c. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0443\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e scaleY<\/strong>, \u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 rotation<\/strong> \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0443\u0431\u0440\u0430\u0442\u044c \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c.<\/p>\n\n\n\n\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u043a\u043e\u043d\u043a\u0435 \u0432 \u0442\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0435, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u043a\u043b\u0438\u043a\u043d\u0443\u043b\u0438. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u044f\u0447\u0435\u0435\u043a, \u0430 \u043c\u0435\u043d\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0439, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u043a\u043b\u0438\u043a\u043d\u0443\u043b\u0438, \u0431\u0443\u0434\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441 \u044f\u0447\u0435\u0439\u043a\u0438 \u0438 \u0435\u0435 \u043d\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u043f\u043e\u043b\u0435 mCellStateByIndex<\/strong>, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u0434\u0435\u043a\u0441 \u0438 \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u044f\u0447\u0435\u0439\u043a\u0438.<\/p>\n\n\n\n