{"id":340402,"date":"2022-10-28T15:01:04","date_gmt":"2022-10-28T15:01:04","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=340402"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=340402","title":{"rendered":"<span>\u0412\u0441\u0435\u043c \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 \u0441\u0443\u043c\u0440\u0430\u043a\u0430: \u043a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u043d\u044c \u043d\u0430 Android<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041a\u043e\u0433\u0434\u0430 \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u0440\u0435\u0447\u044c \u043f\u0440\u043e \u0442\u0435\u043d\u0438 \u043d\u0430 Android, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432. \u041f\u0435\u0440\u0432\u044b\u0439: \u0437\u0430\u0447\u0435\u043c \u043e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b? \u0412\u0442\u043e\u0440\u043e\u0439: \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0442\u0435\u043d\u0438 \u0438 \u0436\u0438\u0442\u044c \u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u043e? \u0422\u0440\u0435\u0442\u0438\u0439: \u0435\u0441\u043b\u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0442\u0435\u043d\u0438, \u043a\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435? <\/p>\n<p>\u042d\u0442\u043e \u0421\u0435\u0440\u0433\u0435\u0439 \u041f\u0435\u0442\u0440\u043e\u0432, Android-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Design System inDrive, \u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u0435\u043d\u044f\u0445 \u043d\u0430 Android. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/693\/f0a\/522\/693f0a522d78ac1c96599620b137640d.png\" width=\"1560\" height=\"880\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/693\/f0a\/522\/693f0a522d78ac1c96599620b137640d.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u0430\u043c \u043e\u0442\u0432\u0435\u0442\u044f\u0442 \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u044b.\u00a0\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u0443\u0431\u0435\u0434\u0438\u0442\u044c \u0438\u0445 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0442\u0435\u043d\u0438 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u043e\u0447\u0442\u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0442\u0440\u0443\u0434\u043e\u0437\u0430\u0442\u0440\u0430\u0442\u0430\u043c\u0438 \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0432\u044b \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0433\u0430\u0439\u0434\u043b\u0430\u0439\u043d\u0430\u043c Material.<\/p>\n<p>\u0418\u0441\u043a\u0440\u0435\u043d\u043d\u0435 \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0432\u0430\u0448\u0430 \u0441\u0442\u043e\u0439\u043a\u043e\u0441\u0442\u044c \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>elevation<\/code> \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0442\u0435\u043d\u0435\u0439. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u2014 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0442\u0440\u0435\u0442\u0438\u0439 \u0432\u043e\u043f\u0440\u043e\u0441.<\/p>\n<p>\u041e\u0433\u043e\u0432\u043e\u0440\u044e\u0441\u044c, \u0447\u0442\u043e \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0442\u0435\u043d\u0435\u0439. \u0412 Android, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 API 21, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0442\u0435\u043c\u044b <a href=\"https:\/\/developer.android.com\/reference\/android\/R.attr#ambientShadowAlpha\">ambientShadowAlpha<\/a> \u0438 <a href=\"https:\/\/developer.android.com\/reference\/android\/R.attr#spotShadowAlpha\">spotShadowAlpha<\/a>. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u043d\u0435\u0439.<\/p>\n<p>\u0410 \u043f\u043e\u0437\u0436\u0435 \u0432 API 28 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0446\u0432\u0435\u0442\u0430 \u0442\u0435\u043d\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0442\u0435\u043c\u044b  <a href=\"https:\/\/developer.android.com\/reference\/android\/R.attr#outlineAmbientShadowColor\">outlineAmbientShadowColor<\/a> \u0438 <a href=\"https:\/\/developer.android.com\/reference\/android\/R.attr#outlineSpotShadowColor\">outlineSpotShadowColor<\/a>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 <code>View<\/code> \u2014 <a href=\"https:\/\/developer.android.com\/reference\/android\/view\/View.html#attr_android:outlineAmbientShadowColor\">outlineAmbientShadowColor<\/a> \u0438 <a href=\"https:\/\/developer.android.com\/reference\/android\/view\/View.html#attr_android:outlineSpotShadowColor\">outlineSpotShadowColor<\/a>.<\/p>\n<h2>Elevation<\/h2>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 <code>elevation<\/code> \u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0442\u0435\u043d\u0438, \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f.<\/p>\n<p>\u0423 \u043d\u0430\u0441 \u0432 \u0434\u0438\u0437\u0430\u0439\u043d\u0435 \u0435\u0441\u0442\u044c \u0442\u0440\u0438 \u0440\u0430\u0437\u043d\u043e\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u043d\u0435\u0439 (\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u043d\u0438\u0436\u0435): <\/p>\n<ul>\n<li>\n<p>S  \u2014 \u0440\u0430\u0437\u043c\u0435\u0440 12dp.<\/p>\n<\/li>\n<li>\n<p>M \u2014 \u0440\u0430\u0437\u043c\u0435\u0440 20dp.<\/p>\n<\/li>\n<li>\n<p>L \u2014 \u0440\u0430\u0437\u043c\u0435\u0440 32dp.<\/p>\n<\/li>\n<\/ul>\n<p>\u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u0435\u043d\u0438 \u0441\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u043e \u043e\u0441\u0438 Y. \u041d\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043c\u044b \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u043c, \u043d\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438. \u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043e API 28 \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0442\u0435\u043c\u044b. \u0417\u0430\u0434\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u043e \u0441\u0442\u0438\u043b\u044e \u0442\u0435\u043d\u044f\u043c \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438, \u043a\u0430\u043a \u0432 \u0434\u0438\u0437\u0430\u0439\u043d\u0435, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u0442. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435, \u0446\u0432\u0435\u0442 \u0442\u0435\u043d\u0438 \u0432 \u0434\u0438\u0437\u0430\u0439\u043d\u0435 \u043d\u0435 \u0447\u0435\u0440\u043d\u044b\u0439, \u043a\u0430\u043a \u0432 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u043c Android. \u0427\u0442\u043e \u0436, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u0441\u0445\u043e\u0434\u0441\u0442\u0432\u0430.<\/p>\n<p>\u0414\u043e\u043b\u0433\u043e \u0438 \u0443\u0441\u0435\u0440\u0434\u043d\u043e \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0432\u0441\u0435\u043c \u0442\u0440\u0435\u043c \u0442\u0435\u043d\u044f\u043c \u0441\u0440\u0430\u0437\u0443.<\/p>\n<pre><code class=\"xml\">\/\/ \u0442\u0435\u043c\u0430 &lt;item name=\"android:ambientShadowAlpha\">0.01&lt;\/item> &lt;item name=\"android:spotShadowAlpha\">0.08&lt;\/item>  \/\/ \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 elevatiom &lt;dimen name=\"elevation_s\">12dp&lt;\/dimen> &lt;dimen name=\"elevation_m\">24dp&lt;\/dimen> &lt;dimen name=\"elevation_l\">30dp&lt;\/dimen><\/code><\/pre>\n<figure class=\"bordered\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/862\/dc2\/ddf\/862dc2ddfb5d5e5fb18ef4d070f9a974.jpeg\" alt=\"\u0422\u0435\u043d\u044c S \u2014 \u0434\u0438\u0437\u0430\u0439\u043d\" title=\"\u0422\u0435\u043d\u044c S \u2014 \u0434\u0438\u0437\u0430\u0439\u043d\" width=\"320\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/862\/dc2\/ddf\/862dc2ddfb5d5e5fb18ef4d070f9a974.jpeg\" data-blurred=\"true\"\/><figcaption>\u0422\u0435\u043d\u044c S \u2014 \u0434\u0438\u0437\u0430\u0439\u043d<\/figcaption><\/figure>\n<figure class=\"bordered\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/524\/740\/3d1\/5247403d19cad29bc96297c5c9e15d2e.jpeg\" alt=\"\u0422\u0435\u043d\u044c S \u2014 elevation 8dp\" title=\"\u0422\u0435\u043d\u044c S \u2014 elevation 8dp\" width=\"320\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/524\/740\/3d1\/5247403d19cad29bc96297c5c9e15d2e.jpeg\" data-blurred=\"true\"\/><figcaption>\u0422\u0435\u043d\u044c S \u2014 elevation 8dp<\/figcaption><\/figure>\n<figure class=\"bordered\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/ede\/c95\/7b4\/edec957b4b85ed322363e64e440a1408.jpeg\" alt=\"\u0422\u0435\u043d\u044c M \u2014 \u0434\u0438\u0437\u0430\u0439\u043d \" title=\"\u0422\u0435\u043d\u044c M \u2014 \u0434\u0438\u0437\u0430\u0439\u043d \" width=\"320\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ede\/c95\/7b4\/edec957b4b85ed322363e64e440a1408.jpeg\" data-blurred=\"true\"\/><figcaption>\u0422\u0435\u043d\u044c M \u2014 \u0434\u0438\u0437\u0430\u0439\u043d <\/figcaption><\/figure>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/d7e\/cc5\/295\/d7ecc5295a52272faf1fe85e96c73d9a.jpeg\" alt=\"\u0422\u0435\u043d\u044c M \u2014 elevation 24dp \" title=\"\u0422\u0435\u043d\u044c M \u2014 elevation 24dp \" width=\"320\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d7e\/cc5\/295\/d7ecc5295a52272faf1fe85e96c73d9a.jpeg\" data-blurred=\"true\"\/><figcaption>\u0422\u0435\u043d\u044c M \u2014 elevation 24dp <\/figcaption><\/figure>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/e4c\/a5e\/34c\/e4ca5e34c80144bf6547b89cc2f512c2.jpeg\" alt=\"\u0422\u0435\u043d\u044c L \u2014 \u0434\u0438\u0437\u0430\u0439\u043d\" title=\"\u0422\u0435\u043d\u044c L \u2014 \u0434\u0438\u0437\u0430\u0439\u043d\" width=\"320\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e4c\/a5e\/34c\/e4ca5e34c80144bf6547b89cc2f512c2.jpeg\" data-blurred=\"true\"\/><figcaption>\u0422\u0435\u043d\u044c L \u2014 \u0434\u0438\u0437\u0430\u0439\u043d<\/figcaption><\/figure>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/3db\/b7f\/ba8\/3dbb7fba84302295b7c60d7d657b4305.jpeg\" alt=\"\u0422\u0435\u043d\u044c L \u2014 elevation 30dp \" title=\"\u0422\u0435\u043d\u044c L \u2014 elevation 30dp \" width=\"320\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3db\/b7f\/ba8\/3dbb7fba84302295b7c60d7d657b4305.jpeg\" data-blurred=\"true\"\/><figcaption>\u0422\u0435\u043d\u044c L \u2014 elevation 30dp <\/figcaption><\/figure>\n<p>\u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u043e. \u0422\u0435\u043d\u044c S \u0441\u043b\u0435\u0433\u043a\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u0434\u0432\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0441\u043d\u043e\u0441\u043d\u043e. \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u043e\u0447\u043d\u0435\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043e\u0431\u0449\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u0432\u0440\u044f\u0434 \u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u043d\u043e, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 API 28, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u0442\u043e\u0447\u043d\u043e\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0435\u0448\u0435\u043d\u0430, \u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0435\u0436\u0434\u0430\u0442\u044c \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u0430, \u0447\u0442\u043e \u0442\u0435\u043d\u044c S \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0435\u0433\u043a\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0434\u0438\u0437\u0430\u0439\u043d\u0430. \u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0440\u044f\u0434 \u043b\u0438 \u044d\u0442\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442, \u0434\u0430 \u0438 \u043a\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0438\u0437 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Android \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0430\u043a\u0438\u0435 \u043c\u0435\u043b\u043e\u0447\u0438.<\/p>\n<p>\u041d\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e. \u0412 Android \u0434\u0432\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0441\u0432\u0435\u0442\u0430: ambient light, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0432\u0435\u0442\u0438\u0442 \u0432\u043e \u0432\u0441\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0438 key light \u2014 \u0441\u0432\u0435\u0442\u0438\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e. \u041a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, <a href=\"https:\/\/medium.com\/android-news\/mastering-shadows-in-android-e883ad2c9d5b\">\u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0438 \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0430 \u044d\u0442\u0430 \u0442\u0435\u043c\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6c3\/82e\/a68\/6c382ea687e86b3bfda9ba7422114b41.png\" alt=\"\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0441\u0432\u0435\u0442\u0430 \u0432 Android\" title=\"\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0441\u0432\u0435\u0442\u0430 \u0432 Android\" width=\"1200\" height=\"801\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6c3\/82e\/a68\/6c382ea687e86b3bfda9ba7422114b41.png\"\/><figcaption>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0441\u0432\u0435\u0442\u0430 \u0432 Android<\/figcaption><\/figure>\n<p>\u0422\u043e\u0442, \u0447\u0442\u043e \u0441\u0432\u0435\u0442\u0438\u0442 \u0441\u0432\u0435\u0440\u0445\u0443 \u043f\u043e\u0434 \u0443\u0433\u043b\u043e\u043c, \u0438 \u0435\u0441\u0442\u044c key light. \u041e\u043d \u0434\u0430\u0435\u0442 \u044f\u0440\u043a\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u043d\u0443\u044e \u0442\u0435\u043d\u044c \u0432 \u043d\u0438\u0436\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u0418 \u0432\u043e\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u0442\u0435\u043d\u044c\u044e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 <code>elevation<\/code>, \u043f\u043e \u043c\u0435\u0440\u0435 \u043e\u0442\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043e\u0442 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/223\/f01\/11d\/223f0111dc905069613fe899ae3aaeeb.jpeg\" alt=\"\u0422\u0435\u043d\u044c L \u2014 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \" title=\"\u0422\u0435\u043d\u044c L \u2014 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \" width=\"180\" height=\"180\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/223\/f01\/11d\/223f0111dc905069613fe899ae3aaeeb.jpeg\" data-blurred=\"true\"\/><figcaption>\u0422\u0435\u043d\u044c L \u2014 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 <\/figcaption><\/figure>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/e1e\/8e3\/acd\/e1e8e3acd85d8f52a0e39bf84f10e5b0.jpeg\" alt=\"\u0422\u0435\u043d\u044c L \u2014 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u043d\u0438\u0436\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430\" title=\"\u0422\u0435\u043d\u044c L \u2014 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u043d\u0438\u0436\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430\" width=\"180\" height=\"180\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e1e\/8e3\/acd\/e1e8e3acd85d8f52a0e39bf84f10e5b0.jpeg\" data-blurred=\"true\"\/><figcaption>\u0422\u0435\u043d\u044c L \u2014 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u043d\u0438\u0436\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430<\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u0432 \u0436\u0438\u0437\u043d\u0438: \u0447\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u043e\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0441\u0432\u0435\u0442\u0430, \u0442\u0435\u043c \u0434\u043b\u0438\u043d\u043d\u0435\u0435 \u0442\u0435\u043d\u044c. \u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u043d\u0430 \u044d\u0442\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c? \u0412 <a href=\"https:\/\/blog.sebastiano.dev\/playing-with-elevation-in-android-part-2\/\">\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 Don\u2019t try this at home \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0434\u0430, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u041d\u043e \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0431\u044b \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0438 \u043d\u0430 \u043a\u043e\u0434-\u0440\u0435\u0432\u044c\u044e \u0437\u0430\u043a\u0440\u044b\u043b\u0438 \u0433\u043b\u0430\u0437\u0430 \u043d\u0430 \u044d\u0442\u043e\u0442 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u0445\u0430\u043a, \u044d\u0442\u043e \u043d\u0435 \u0440\u0435\u0448\u0438\u043b\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e. \u0413\u0434\u0435 \u0431\u044b \u043d\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u043b\u0441\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0432\u0435\u0442\u0430, \u0442\u0435\u043d\u0438 \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u044b\u043b\u0438 \u0431\u044b \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u043c\u0438. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0442\u043e\u043c\u0443 \u2014 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 <code>elevation<\/code>, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430.<\/p>\n<p>\u0418\u0437\u0440\u044f\u0434\u043d\u043e \u0440\u0430\u0441\u0441\u0442\u0440\u043e\u0438\u0432\u0448\u0438\u0441\u044c, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043f\u043b\u0430\u043d\u0443 \u0411 \u2014 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043d\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<h2>MaterialShapeDrawable<\/h2>\n<p>\u0420\u0430\u0437 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0441 <code>elevation<\/code>, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434. \u0412\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0432 Material \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0442\u0435\u043d\u0435\u0439 \u0438 \u043d\u0430 \u0430\u043d\u0442\u0438\u0447\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e.<\/p>\n<p>\u0417\u0430\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0435\u043c \u0432\u043d\u0443\u0442\u0440\u044c <a href=\"https:\/\/developer.android.com\/reference\/com\/google\/android\/material\/shape\/MaterialShapeDrawable\">MaterialShapeDrawable<\/a> \u0438 \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0430 \u043f\u0430\u0440\u0443 \u0441 \u043d\u0435\u043a\u0438\u043c <a href=\"https:\/\/github.com\/material-components\/material-components-android\/blob\/master\/lib\/java\/com\/google\/android\/material\/shadow\/ShadowRenderer.java\">ShadowRenderer<\/a> \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u0432\u0435\u0449\u0430\u043c\u0438. \u041f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u0444\u043e\u0440\u043c\u044b \u0442\u0435\u043d\u044c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432 <a href=\"https:\/\/developer.android.com\/reference\/android\/graphics\/LinearGradient\">LinearGradient<\/a> \u0438 <a href=\"https:\/\/developer.android.com\/reference\/android\/graphics\/RadialGradient\">RadialGradient<\/a>. \u0422\u043e \u0435\u0441\u0442\u044c, \u0442\u0435\u043d\u044c \u2014 \u044d\u0442\u043e \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u0432\u043e\u043a\u0440\u0443\u0433 \u0444\u043e\u0440\u043c\u044b.<\/p>\n<p>\u0418\u0434\u0435\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0435\u0435 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0443\u044e \u0432\u044c\u044e\u0448\u043a\u0443 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f.<\/p>\n<pre><code class=\"kotlin\">val shape = ShapeAppearanceModel.builder()   .setAllCornerSizes(16.toPx())   .build()  val drawable = MaterialShapeDrawable(shape) drawable.fillColor = ColorStateList.valueOf(Color.WHITE) drawable.shadowVerticalOffset = 8.toPx() drawable.shadowRadius = 32.toPx() drawable.shadowCompatibilityMode = MaterialShapeDrawable.SHADOW_COMPAT_MODE_ALWAYS  background = drawable<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0ea\/a40\/7c1\/0eaa407c1d1244d27151fa30da89bade.png\" alt=\"\u0422\u0435\u043d\u044c MaterialShapeDrawable\" title=\"\u0422\u0435\u043d\u044c MaterialShapeDrawable\" width=\"902\" height=\"924\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0ea\/a40\/7c1\/0eaa407c1d1244d27151fa30da89bade.png\"\/><figcaption>\u0422\u0435\u043d\u044c MaterialShapeDrawable<\/figcaption><\/figure>\n<p>\u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0443 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u0430 \u0437\u0430\u0448\u0438\u0442\u044b \u0432 <a href=\"https:\/\/github.com\/material-components\/material-components-android\/blob\/master\/lib\/java\/com\/google\/android\/material\/shadow\/ShadowRenderer.java\">ShadowRenderer<\/a>. \u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0435\u043d\u044c \u043f\u043e \u0441\u0432\u043e\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043a\u043e\u0434, \u0440\u0430\u0437\u0431\u0440\u043e\u0441\u0430\u043d\u043d\u044b\u0439 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043a\u043b\u0430\u0441\u0441\u0430\u043c, \u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442. <\/p>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0436\u0435\u043b\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435\u0433\u043e. \u0420\u0430\u0434\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430 \u0440\u0435\u0448\u0435\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0432\u0435\u0441\u0438\u0442\u044c \u043d\u0430 \u0432\u044c\u044e\u0448\u043a\u0443 \u0430\u043d\u0438\u043c\u0430\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u0435\u043d\u044f\u043b \u0435\u0435 \u0440\u0430\u0437\u043c\u0435\u0440, \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430. \u041b\u0430\u0433\u0438, \u0434\u0430\u0436\u0435 \u043d\u0430 \u0440\u0435\u043b\u0438\u0437\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0435, \u0431\u044b\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u043d\u044b \u043d\u0435\u0432\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c \u0433\u043b\u0430\u0437\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b \u0438 <code>systrace<\/code>. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/b9f\/259\/728\/b9f259728c46fccb81dc0c57f9df2afd.jpeg\" alt=\"\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043a\u0430\u0434\u0440\u0430 \u2014 18 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\" title=\"\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043a\u0430\u0434\u0440\u0430 \u2014 18 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\" width=\"739\" height=\"85\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b9f\/259\/728\/b9f259728c46fccb81dc0c57f9df2afd.jpeg\" data-blurred=\"true\"\/><figcaption>\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043a\u0430\u0434\u0440\u0430 \u2014 18 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434<\/figcaption><\/figure>\n<p>\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u2014 18 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434. \u042d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e <code>draw<\/code> \u043e\u0434\u043d\u043e\u0439 \u0432\u044c\u044e\u0448\u043a\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435. \u0410 <code>draw<\/code> \u2014 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f ? <\/p>\n<p>\u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u043f\u043e\u0438\u0449\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041d\u043e, \u0441\u0442\u043e\u0438\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0438\u0434\u0435\u044e \u0441 <code>Drawable<\/code> \u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u043e\u0439 \u0442\u0435\u043d\u0438 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0433\u0440\u0430\u043d\u0438\u0446 <code>View<\/code> \u044f \u0432\u0437\u044f\u043b \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c.<\/p>\n<h2>\u041a\u0430\u043a \u0435\u0449\u0435 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043d\u044c<\/h2>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0430\u0448\u043b\u0438\u0441\u044c \u0435\u0449\u0435 3 \u0441\u043f\u043e\u0441\u043e\u0431\u0430, \u043f\u043e\u043c\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435.<\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/developer.android.com\/reference\/android\/graphics\/Paint#setShadowLayer(float,%20float,%20float,%20int)\">Paint.setShadowLayer<\/a> \u2014 \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439. \u041c\u0438\u043d\u0438\u043c\u0443\u043c \u043a\u043e\u0434\u0430, \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f (\u0447\u0442\u043e \u0434\u043b\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u2014 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442).<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/developer.android.com\/reference\/android\/graphics\/BlurMaskFilter\">BlurMaskFilter<\/a> \u2014 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0435, \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u0434\u0430, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/developer.android.com\/reference\/android\/renderscript\/ScriptIntrinsicBlur\">ScriptIntrinsicBlur<\/a> \u2014 \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0435\u0449\u0435 \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0442\u0430\u043a\u0436\u0435 \u0441\u043c\u0443\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 Deprecated \u0438 <a href=\"https:\/\/developer.android.com\/guide\/topics\/renderscript\/migrate\">\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<\/li>\n<\/ol>\n<p>\u0415\u0441\u0442\u044c \u0435\u0449\u0435 <a href=\"https:\/\/github.com\/harjot-oberai\/MaterialShadows\">\u044d\u043a\u0437\u043e\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431<\/a>, \u0443 \u043c\u0435\u043d\u044f \u043e\u043d \u043d\u0435 \u0437\u0430\u0432\u0435\u043b\u0441\u044f, \u0438 \u044f \u0442\u0430\u043a \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0438 \u043d\u0435 \u043f\u043e\u043d\u044f\u043b, \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0415\u0441\u043b\u0438 \u0437\u0430\u0432\u0435\u0434\u0435\u0442\u0435 \u0438 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u0442\u0435\u0441\u044c, \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<\/p>\n<p>\u0420\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u043f\u0443\u043d\u043a\u0442\u044b \u043d\u0435 \u0432\u0438\u0436\u0443 \u0441\u043c\u044b\u0441\u043b\u0430. \u0415\u0441\u0442\u044c \u043c\u0430\u0441\u0441\u0430 \u0441\u0442\u0430\u0442\u0435\u0439 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, <a href=\"https:\/\/medium.com\/@yuriyskul\/different-ways-to-create-glowing-shapes-in-android-canvas-8b73010411fe\">\u0432\u043e\u0442 \u044d\u0442\u0430<\/a>. \u0414\u043b\u044f \u0441\u0435\u0431\u044f \u0440\u0435\u0448\u0438\u043b \u0432\u0437\u044f\u0442\u044c \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431. \u0415\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0439\u0434\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439.<\/p>\n<h2>\u0410\u043d\u0430\u043b\u0438\u0437 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439<\/h2>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0441\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438\u0441\u044c. \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c, \u0447\u0442\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c. \u0412 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u0443\u0434\u043e\u0431\u043d\u043e, \u043a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u0442\u044c <code>elevation<\/code>. <\/p>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 \u0442\u0435\u043d\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u044e <code>View<\/code> \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435, \u043a\u0430\u043a\u043e\u0432\u043e \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f\u044b \u0438\u043b\u0438 \u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c <code>View<\/code>, \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u043b\u0438\u044f\u0435\u0442 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c\u0430\u044f \u0435\u0439 \u0442\u0435\u043d\u044c? \u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0442\u0435\u043d\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0432\u0435\u0440\u0441\u0442\u043a\u0443 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u044d\u043a\u0440\u0430\u043d\u043e\u0432. <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u0435\u043d\u0438 \u0432 XML (\u0432 \u0432\u0435\u0440\u0441\u0442\u043a\u0435 \u0438\u043b\u0438 \u0432 \u0441\u0442\u0438\u043b\u0435) \u0438, \u0447\u0442\u043e \u043d\u0435\u043c\u0430\u043b\u043e\u0432\u0430\u0436\u043d\u043e, \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u043f\u0440\u0435\u0432\u044c\u044e Android Studio.<\/p>\n<p>\u0415\u0449\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u043c\u0435\u0442\u044c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043d\u044c \u0443 \u043b\u044e\u0431\u044b\u0445 <code>View<\/code>, \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0435\u0441\u0442\u044c \u043b\u0438 \u0443 \u043d\u0438\u0445 \u0444\u043e\u043d \u0438\u043b\u0438 <code>elevation<\/code>. \u0418 \u0441\u043e\u0432\u0441\u0435\u043c \u0445\u043e\u0440\u043e\u0448\u043e, \u0435\u0441\u043b\u0438 \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0444\u0440\u0435\u0439\u043c.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0442\u0435\u043d\u044c \u0443 \u043d\u0430\u0441 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0444\u043e\u0440\u043c\u0430: \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a (\u0441\u043e \u0441\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0443\u0433\u043b\u0430\u043c\u0438 \u0438\u043b\u0438 \u0431\u0435\u0437), \u043e\u0432\u0430\u043b, \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043c\u043e\u0434\u043d\u044b\u0439 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Squircle\">squircle<\/a>, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u043e\u0442\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u043e\u0432. <\/p>\n<p>\u0421\u0443\u043c\u043c\u0430\u0440\u043d\u043e \u0432\u0441\u0435 \u044d\u0442\u043e \u0437\u0432\u0443\u0447\u0438\u0442, \u043a\u0430\u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0443\u0436\u043d\u044b\u0445 <code>View<\/code> \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043b\u043e\u0433\u0438\u043a\u0443 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0442\u0435\u043d\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0432 \u043e\u0431\u0449\u0438\u0439 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441. \u0422\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0435\u043d\u0438 \u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u0445 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443.<\/p>\n<p>\u041f\u043b\u0430\u043d \u0440\u0435\u0448\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c <code>Drawable<\/code>, \u0443\u043c\u0435\u044e\u0449\u0438\u0439 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043d\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u043f\u0438\u0448\u0435\u043c <code>View<\/code>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 \u044d\u0442\u043e\u0442 <code>Drawable<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0437\u043c\u0435\u0440\u0438\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<h2>NinePatchDrawable<\/h2>\n<p>\u0412 \u043e\u0434\u043d\u043e\u0439 <a href=\"https:\/\/habr.com\/ru\/company\/citymobil\/blog\/652955\/\">\u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043f\u0440\u043e \u0442\u0435\u043d\u0438 \u043d\u0430 Android \u043e\u0442 \u044d\u0442\u043e\u0439 \u0438\u0434\u0435\u0438 \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c. \u0421\u0442\u0430\u0442\u044c\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f, \u043d\u043e \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u0430\u0441\u044c \u043c\u043d\u0435 \u043d\u0430 \u0433\u043b\u0430\u0437\u0430 \u0432 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u044f \u0438\u0441\u043a\u0430\u043b \u0440\u0435\u0448\u0435\u043d\u0438\u0435. <\/p>\n<p>\u0418\u0442\u0430\u043a, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 9-patch \u0438 \u0437\u0430\u0447\u0435\u043c \u043e\u043d \u043d\u0443\u0436\u0435\u043d? \u0422\u0443\u0442 \u043c\u043d\u0435, \u043a\u0430\u043a \u0441\u0442\u0430\u0440\u043e\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0438\u0433\u0440 \u043d\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Macromedia_Flash\">Marcomedia Flash<\/a> (\u0434\u0430 \u0443\u043f\u043e\u043a\u043e\u0439 \u0413\u043e\u0441\u043f\u043e\u0434\u044c \u0435\u0433\u043e \u0434\u0443\u0448\u0443 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0434\u0443\u0448\u043e\u0439 \u0421\u0442\u0438\u0432\u0430), \u043d\u0443\u0436\u043d\u043e \u0441\u043c\u0430\u0445\u043d\u0443\u0442\u044c \u043d\u043e\u0441\u0442\u0430\u043b\u044c\u0433\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u043b\u0435\u0437\u0443. \u042d\u0442\u0443 \u0442\u0435\u0445\u043d\u0438\u043a\u0443 \u044f \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u043e\u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b \u0442\u0430\u043c, \u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/9-slice_scaling\">\u00ab\u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u044f\u00bb<\/a> \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043c \u043e\u043d\u0430 \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0438 \u0431\u044b\u043b\u0430 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u0430.<\/p>\n<p>\u0421\u0443\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0430\u0441\u0442\u0440\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 9 \u0447\u0430\u0441\u0442\u0435\u0439, \u0438 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438, \u043a\u0440\u043e\u043c\u0435 \u0443\u0433\u043b\u043e\u0432. \u0422\u0430\u043a \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c \u0434\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u0435\u0437 \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u043f\u043e\u0442\u0435\u0440\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u0441\u044f \u0438 \u043f\u0430\u043c\u044f\u0442\u044c (\u0440\u0430\u0437\u043c\u0435\u0440 <code>Bitmap<\/code> \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0435\u043d), \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f (\u043e\u0442\u0434\u0430\u0442\u044c <code>Bitmap<\/code> \u043d\u0430 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442). \u041d\u0443 \u0430 GPU \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u0439 <code>Bitmap<\/code> \u043f\u043e\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, Android \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c <a href=\"https:\/\/developer.android.com\/reference\/android\/graphics\/drawable\/NinePatchDrawable\">NinePatchDrawable<\/a> \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e. \u0410 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438 \u0444\u043e\u0440\u043c\u0430 \u0444\u0438\u0433\u0443\u0440\u044b \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u0435\u043d\u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b \u2014 \u0437\u0430\u0434\u0430\u0447\u0430 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430\u044f.<\/p>\n<h2>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h2>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u0444\u043e\u0440\u043c\u0443 \u0442\u0435\u043d\u0438:<\/p>\n<pre><code class=\"kotlin\">data class ShadowSpec(   @ColorInt val shadowColor: Int = Color.TRANSPARENT,   @Px val shadowOffsetX: Float = 0f,   @Px val shadowOffsetY: Float = 0f,   @Px val shadowSize: Float = 0f,   val cornerSize: CornerSize? = null,   val cornerSizeTopLeft: CornerSize? = null,   val cornerSizeTopRight: CornerSize? = null,   val cornerSizeBottomLeft: CornerSize? = null,   val cornerSizeBottomRight: CornerSize? = null )<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u044b \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/developer.android.com\/reference\/com\/google\/android\/material\/shape\/ShapeAppearanceModel\">ShapeAppearanceModel<\/a>, \u0430 \u0442\u0430\u043a\u0436\u0435 <a href=\"https:\/\/developer.android.com\/reference\/com\/google\/android\/material\/shape\/ShapeAppearancePathProvider\">ShapeAppearancePathProvider<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442 <a href=\"https:\/\/developer.android.com\/reference\/android\/graphics\/Path\">Path<\/a>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438.<\/p>\n<p>\u0412 \u043a\u043e\u0434\u0435 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"kotlin\">\/\/ \u0441\u0442\u0440\u043e\u0438\u043c \u0444\u043e\u0440\u043c\u0443 - \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c Material val path = Path() val provider = ShapeAppearancePathProvider() val model = ShapeAppearanceModel.Builder()   .setTopLeftCorner(CornerFamily.ROUNDED, topLeftCornerSize)   .setTopRightCorner(CornerFamily.ROUNDED, topRightCornerSize)   .setBottomLeftCorner(CornerFamily.ROUNDED, bottomLeftCornerSize)   .setBottomRightCorner(CornerFamily.ROUNDED, bottomRightCornerSize)   .build()  provider.calculatePath(model, 1f, RectF(0f, 0f, width, height), path)<\/code><\/pre>\n<p>\u0424\u043e\u0440\u043c\u0430 \u0435\u0441\u0442\u044c, \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u043c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0439\u043c\u0435\u0442 \u0442\u0435\u043d\u044c \u2014 \u0440\u0430\u0434\u0438\u0443\u0441 \u0442\u0435\u043d\u0438 \u043f\u043b\u044e\u0441 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435. \u0415\u0441\u0442\u044c \u0435\u0449\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>SHADOW_SPREAD_MULTIPLIER<\/code>, \u0447\u0443\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043b\u0438\u0441\u044c \u0432 \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 <code>Bitmap<\/code>. <\/p>\n<pre><code class=\"kotlin\">\/\/ \u043d\u0430 \u0433\u043b\u0430\u0437 \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0435\u043d\u0438 \u043f\u0440\u0438 \u0440\u0430\u0437\u043c\u044b\u0442\u0438\u0438 \u0442\u0430\u043a, \/\/ \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438. with(spec) {   val spreadOffset = shadowSize * SHADOW_SPREAD_MULTIPLIER   spreadBounds.set(     (spreadOffset - shadowOffsetX).coerceAtLeast(0f),     (spreadOffset - shadowOffsetY).coerceAtLeast(0f),     (spreadOffset + shadowOffsetX).coerceAtLeast(0f),     (spreadOffset + shadowOffsetY).coerceAtLeast(0f)   ) }<\/code><\/pre>\n<p>\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0436\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 <code>Bitmap<\/code> \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0440\u0430\u0434\u0438\u0443\u0441\u044b \u0441\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f \u0443\u0433\u043b\u043e\u0432 \u0444\u043e\u0440\u043c\u044b \u043f\u043b\u044e\u0441 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0430\u043c\u043e\u0439 \u0442\u0435\u043d\u0438. \u0413\u0440\u0430\u043d\u0438\u0446\u044b <code>9.patch<\/code> \u0442\u043e\u0436\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e.<\/p>\n<pre><code class=\"kotlin\">\/\/ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0443\u0433\u043b\u043e\u0432 val left = max(topLeftCornerSize, bottomLeftCornerSize) val top = max(topLeftCornerSize, topRightCornerSize) val right = max(topRightCornerSize, bottomRightCornerSize) val bottom = max(bottomLeftCornerSize, bottomRightCornerSize)  \/\/ \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0444\u043e\u0440\u043c\u044b, \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0437\u0430\u043f\u0430\u0441\u043e\u043c val width = max(left + right, dp20) + 2 * dp1 val height = max(top + bottom, dp20) + 2 * dp1  \/\/ \u0440\u0430\u0437\u043c\u0435\u0440 Bitmap val bitmapWidth = width + spreadBounds.left + spreadBounds.right val bitmapHeight = height + spreadBounds.top + spreadBounds.bottom  \/\/ \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0434\u043b\u044f 9.patch val leftChunk = left + spreadBounds.left val topChunk = top + spreadBounds.top val rightChunk = bitmapWidth - right - spreadBounds.right val bottomChunk = bitmapHeight - bottom - spreadBounds.bottom<\/code><\/pre>\n<p>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0435. \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c <a href=\"https:\/\/developer.android.com\/reference\/android\/graphics\/Paint#setShadowLayer(float,%20float,%20float,%20int)\">Paint.setShadowLayer<\/a> \u0438 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0440\u0435\u0437\u0430\u0435\u043c \u0444\u043e\u0440\u043c\u0443, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f <s>\u0437\u0435\u043c\u043b\u0435<\/s> \u043b\u0438\u0448\u044c \u0442\u0435\u043d\u044c \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441 \u0442\u0435\u043d\u044c\u044e \u0440\u0435\u0448\u0438\u0442 \u0441\u0442\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c. <\/p>\n<pre><code class=\"kotlin\">\/\/ \u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 val paint = Paint(Paint.ANTI_ALIAS_FLAG).apply {   color = spec.shadowColor   setShadowLayer(spec.shadowSize, spec.shadowOffsetX, spec.shadowOffsetY, spec.shadowColor) }  val clearPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {   xfermode = PorterDuffXfermode(PorterDuff.Mode.CLEAR) }  val matrix = Matrix() matrix.postTranslate(spreadBounds.left, spreadBounds.top) path.transform(matrix)  \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0444\u043e\u0440\u043c\u0443 \u0441 \u0442\u0435\u043d\u044c\u044e \u0438 \u0432\u044b\u0440\u0435\u0437\u0430\u0435\u043c \u0441\u0430\u043c\u0443 \u0444\u043e\u0440\u043c\u0443 canvas.drawPath(path, paint) canvas.drawPath(path, clearPaint)<\/code><\/pre>\n<p>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u0443\u044e \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443. \u0417\u0435\u043b\u0435\u043d\u044b\u043c\u0438 \u043b\u0438\u043d\u0438\u044f\u043c\u0438 \u043d\u0430 \u043d\u0435\u0439 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u0441\u0435\u0442\u043a\u0430, \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0440\u0430\u0441\u0442\u044f\u0436\u0435\u043d\u0438\u0435. C \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0439 <code>Bitmap<\/code> \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u043b\u044e\u0431\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441 \u0442\u0435\u043d\u044c\u044e S \u0438 \u0443\u0433\u043b\u0430\u043c\u0438 16dp. <\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/323\/e57\/044\/323e5704428fef62bb8d04db9c821e7c.jpeg\" alt=\"Bitmap \u0434\u043b\u044f NinePatchDrawable\" title=\"Bitmap \u0434\u043b\u044f NinePatchDrawable\" width=\"193\" height=\"193\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/323\/e57\/044\/323e5704428fef62bb8d04db9c821e7c.jpeg\" data-blurred=\"true\"\/><figcaption>Bitmap \u0434\u043b\u044f NinePatchDrawable<\/figcaption><\/figure>\n<p>\u041e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u00ab\u0437\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c\u00bb \u0435\u0435 \u0432 <code>NinePatchDrawable<\/code>. API \u043d\u0435 \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043d\u043e <a href=\"https:\/\/stackoverflow.com\/a\/16676419\">StackOverflow<\/a> \u043d\u0435 \u0431\u0440\u043e\u0441\u0438\u0442 \u0432 \u0442\u0440\u0443\u0434\u043d\u0443\u044e \u043c\u0438\u043d\u0443\u0442\u0443.<\/p>\n<pre><code class=\"kotlin\">\/\/ \u0441\u0442\u0440\u043e\u0438\u043c drawable drawable = NinePatchDrawable(   context.resources,   NinePatchUtils.getNinePatch(     bitmap = bitmap,     left = leftChunk.roundToInt(),     top = topChunk.roundToInt(),     right = rightChink.roundToInt(),     bottom = bottomChunk.roundToInt()   ) )<\/code><\/pre>\n<h2>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435<\/h2>\n<p>\u041f\u043e\u043c\u0435\u0441\u0442\u0438\u0432 \u0432\u0441\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0432 \u043a\u043b\u0430\u0441\u0441 <code>ShadowRenderer<\/code> \u043d\u0430 200 \u0441\u0442\u0440\u043e\u043a, \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c <code>ShadowView<\/code> \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438. \u0422\u0443\u0442 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0440\u0438 \u043c\u043e\u043c\u0435\u043d\u0442\u0430. <\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c <code>outlineProvider<\/code> \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0440\u0430\u0442\u044c \u043d\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u0442\u0435\u043d\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u0430\u0435\u0442 elevation. \u0421\u0430\u043c <code>elevation<\/code> \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435, <code>outlineProvider<\/code> \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043d\u044c \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0433\u0440\u0430\u043d\u0438\u0446 <code>ShadowView<\/code>, \u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c <code>clipToOutline<\/code>.<\/p>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c <code>clipChildren<\/code> \u0443 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u2014 \u0442\u0435\u043d\u044c \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0441\u043d\u0430\u0440\u0443\u0436\u0438, \u0430 \u043d\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u0433\u0440\u0430\u043d\u0438\u0446 <code>View<\/code>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/89f\/b94\/a75\/89fb94a7561dee131d5e18463ec03535.png\" alt=\"\u0422\u0435\u043d\u044c \u043e\u0431\u0440\u0435\u0437\u0430\u0435\u0442\u0441\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 View\" title=\"\u0422\u0435\u043d\u044c \u043e\u0431\u0440\u0435\u0437\u0430\u0435\u0442\u0441\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 View\" width=\"632\" height=\"632\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/89f\/b94\/a75\/89fb94a7561dee131d5e18463ec03535.png\"\/><figcaption>\u0422\u0435\u043d\u044c \u043e\u0431\u0440\u0435\u0437\u0430\u0435\u0442\u0441\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 View<\/figcaption><\/figure>\n<p>\u0422\u0440\u0435\u0442\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a <code>ShadowView<\/code> \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c (\u0434\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u0441\u0434\u0435\u043b\u0430\u044e \u0442\u0435\u043d\u044c \u043a\u0440\u0430\u0441\u043d\u043e\u0439).  <\/p>\n<p>\u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u0440\u0438 alpha \u043c\u0435\u043d\u044c\u0448\u0435 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u043a\u043b\u0438\u043f\u043f\u0438\u043d\u0433 \u0443 <code>View<\/code> \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043e\u0431\u0440\u0435\u0437\u0430\u044f \u0442\u0435\u043d\u044c. \u041d\u043e \u0442\u0443\u0442 \u044f \u043e\u0442\u0434\u0435\u043b\u0430\u043b\u0441\u044f \u043b\u0435\u0433\u043a\u0438\u043c \u0438\u0441\u043f\u0443\u0433\u043e\u043c. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043a \u043c\u0435\u0442\u043e\u0434\u0443 <a href=\"https:\/\/developer.android.com\/reference\/android\/view\/View#setAlpha(float)\">View.setAlpha<\/a> \u0438 \u043e\u043f\u044f\u0442\u044c \u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u0434\u0443\u0448\u0435\u0432\u043d\u044b\u0439 \u043f\u043e\u043a\u043e\u0439.<\/p>\n<blockquote>\n<p>Starting with <code>Build.VERSION_CODES.M<\/code>, setting a translucent alpha value will clip a View to its bounds, unless the View returns <code>false<\/code> from<code>hasOverlappingRendering()<\/code>.<\/p>\n<\/blockquote>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043d\u0430\u0448 <code>ShadowView<\/code>. \u0417\u0430 \u043c\u0438\u043d\u0443\u0441\u043e\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c 3 \u043c\u0435\u0442\u043e\u0434\u0430.<\/p>\n<pre><code class=\"kotlin\">override fun hasOverlappingRendering(): Boolean {   \/\/ \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e View \u043d\u0435 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0437\u0430 \u0441\u0432\u043e\u0438\u043c\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438,   \/\/ \u0435\u0441\u043b\u0438 alpha &lt; 1 (\u0441\u043c setAlpha)   \/\/ \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u044d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u0430\u044f \u0442\u0435\u043d\u044c   return !shadowSpec.isShadowVisible }  override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {   super.onSizeChanged(w, h, oldw, oldh)   shadowRenderer.setSize(w, h) }  override fun draw(canvas: Canvas) {   shadowRenderer.draw(canvas)   super.draw(canvas) }<\/code><\/pre>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0442\u0430\u043c \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435. \u0415\u0441\u0442\u044c \u0435\u0449\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <code>chipChildren<\/code> \u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <code>outlineProvider<\/code>, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0442\u0435\u043d\u0438 \u0438\u0437 \u0441\u0442\u0438\u043b\u044f\/\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u2014 \u0432\u0441\u0435 \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u0441 \u0432\u0430\u043c\u0438 \u0442\u0430\u043a \u043b\u044e\u0431\u0438\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0445 \u0432\u044c\u044e\u0448\u043a\u0430\u0445. \u041d\u043e \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0441 \u0442\u0435\u043d\u044c\u044e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u043e. <\/p>\n<h2>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/h2>\n<p>\u042f \u0431\u044b\u043b \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u0432\u044b\u0448\u0435. \u0422\u0430\u043a \u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e. <\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/f69\/06d\/d17\/f6906dd1788f6639eb68114c86116966.jpeg\" alt=\"\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043a\u0430\u0434\u0440\u0430 \u2014 1 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\" title=\"\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043a\u0430\u0434\u0440\u0430 \u2014 1 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\" width=\"492\" height=\"104\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f69\/06d\/d17\/f6906dd1788f6639eb68114c86116966.jpeg\" data-blurred=\"true\"\/><figcaption>\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043a\u0430\u0434\u0440\u0430 \u2014 1 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430<\/figcaption><\/figure>\n<p>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439, \u0447\u0442\u043e \u0438 \u0441 <code>MaterialShapeDrawable<\/code>: \u043e\u0434\u0438\u043d <code>ShadowView<\/code> \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0438 \u0430\u043d\u0438\u043c\u0430\u0442\u043e\u0440, \u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0439 \u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u044b.<\/p>\n<p>\u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f <code>Bitmap<\/code> \u0442\u043e\u0436\u0435 \u043d\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u0435\u043d, \u043d\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0432 \u0442\u0440\u0435\u0439\u0441\u0435 \u043d\u0430\u0439\u0442\u0438 \u0435\u0433\u043e \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u2014 \u0432\u0441\u0435 \u0444\u0440\u0435\u0439\u043c\u044b \u043a\u043e\u0440\u043e\u0442\u0435\u043d\u044c\u043a\u0438\u0435 \u0438 \u0440\u043e\u0432\u043d\u0435\u043d\u044c\u043a\u0438\u0435, \u043a\u0430\u043a \u043d\u0430 \u043f\u043e\u0434\u0431\u043e\u0440. \u0421\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u0434 \u043c\u0435\u0442\u043a\u0443 \u0434\u043b\u044f \u0442\u0440\u0435\u0439\u0441\u0430 \u0438 \u0432\u044b\u044f\u0441\u043d\u044f\u0442\u044c \u0442\u043e\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434 \u0431\u044b\u043b\u043e \u0443\u0436\u0435 \u043b\u0435\u043d\u044c.<\/p>\n<p>\u041d\u043e \u0435\u0441\u0442\u044c \u0438 \u043b\u043e\u0436\u043a\u0430 \u0434\u0435\u0433\u0442\u044f. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043a\u0440\u0443\u0433\u043b\u043e\u0439 \u0444\u043e\u0440\u043c\u044b \u0441\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f \u0443\u0433\u043b\u043e\u0432 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u0448\u0438\u0440\u0438\u043d\u044b \u0438\u043b\u0438 \u0432\u044b\u0441\u043e\u0442\u044b, \u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432\u043b\u0435\u0447\u0435\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 <code>Bitmap<\/code> \u0438 <code>NinePatchDrawable<\/code>. \u0422\u043e\u0433\u0434\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u0430 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0443\u0445\u0443\u0434\u0448\u0430\u0435\u0442\u0441\u044f, \u0432 \u0440\u0430\u0439\u043e\u043d\u0435 20\u043c\u0441 \u043d\u0430 \u0444\u0440\u0435\u0439\u043c. <\/p>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0432\u0430. \u041f\u0435\u0440\u0432\u044b\u0439 \u2014 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e <code>Bitmap<\/code> \u0438 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043d\u044c \u043d\u0430 \u043a\u0430\u043d\u0432\u0430\u0441\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Paint \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 <code>draw<\/code>.  \u0412\u0442\u043e\u0440\u043e\u0439 \u2014 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0434\u0438\u0443\u0441\u0430 \u0443\u0433\u043b\u043e\u0432,  \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0435 \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043e\u0432\u0430\u043b\u0430. \u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e <code>Bitmap<\/code>, \u043d\u043e \u0437\u0430\u0442\u043e \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e\u0439.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0435\u0449\u0435 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432 <a href=\"https:\/\/developer.android.com\/reference\/android\/util\/LruCache\">LruCache<\/a>. \u0420\u0430\u0437\u043d\u043e\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0435\u0439 \u0442\u0435\u043d\u0438 \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435\u0433\u043e 3, \u0444\u043e\u0440\u043c \u0442\u043e\u0436\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u0436\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 <code>Bitmap<\/code> \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e. \u041d\u043e \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0435\u0449\u0435 \u043d\u0435 \u0434\u043e\u0448\u043b\u0438 \u0440\u0443\u043a\u0438, \u0434\u0430 \u0438 \u043f\u043e\u043a\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0421\u0442\u043e\u0438\u043b\u0430 \u043b\u0438 \u0438\u0433\u0440\u0430 \u0441\u0432\u0435\u0447? \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e \u0434\u0430. \u0422\u0435\u043d\u0438 \u0441\u0442\u0430\u043b\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 <code>elevation<\/code>. <\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 <code>elevation<\/code>? \u0422\u043e\u0436\u0435 \u0434\u0430, \u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0433\u0443\u0442 \u0434\u0430\u0442\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b.<\/p>\n<p>\u041d\u0443\u0436\u043d\u043e \u043b\u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a? \u0414\u0443\u043c\u0430\u044e, \u0442\u043e\u0436\u0435 \u0434\u0430. \u0422\u0430\u043a \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u0430\u043c. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435, Android \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0434\u0430\u0435\u0442 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u043c.<\/p>\n<p>\u0427\u0442\u043e \u0441 Compose? \u0421 Compose \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u043e, \u0441\u043a\u043e\u0440\u043e, <a href=\"https:\/\/issuetracker.google.com\/issues\/160665122\">\u0441\u043a\u043e\u0440\u043e<\/a>.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/inDrive\/blog\/696006\/\"> https:\/\/habr.com\/ru\/company\/inDrive\/blog\/696006\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041a\u043e\u0433\u0434\u0430 \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u0440\u0435\u0447\u044c \u043f\u0440\u043e \u0442\u0435\u043d\u0438 \u043d\u0430 Android, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432. \u041f\u0435\u0440\u0432\u044b\u0439: \u0437\u0430\u0447\u0435\u043c \u043e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b? \u0412\u0442\u043e\u0440\u043e\u0439: \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0442\u0435\u043d\u0438 \u0438 \u0436\u0438\u0442\u044c \u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u043e? \u0422\u0440\u0435\u0442\u0438\u0439: \u0435\u0441\u043b\u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0442\u0435\u043d\u0438, \u043a\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435? <\/p>\n<p>\u042d\u0442\u043e \u0421\u0435\u0440\u0433\u0435\u0439 \u041f\u0435\u0442\u0440\u043e\u0432, Android-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Design System inDrive, \u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u0435\u043d\u044f\u0445 \u043d\u0430 Android. <\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u0430\u043c \u043e\u0442\u0432\u0435\u0442\u044f\u0442 \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u044b.\u00a0\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u0443\u0431\u0435\u0434\u0438\u0442\u044c \u0438\u0445 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0442\u0435\u043d\u0438 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u043e\u0447\u0442\u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0442\u0440\u0443\u0434\u043e\u0437\u0430\u0442\u0440\u0430\u0442\u0430\u043c\u0438 \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0432\u044b \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0433\u0430\u0439\u0434\u043b\u0430\u0439\u043d\u0430\u043c Material.<\/p>\n<p>\u0418\u0441\u043a\u0440\u0435\u043d\u043d\u0435 \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0432\u0430\u0448\u0430 \u0441\u0442\u043e\u0439\u043a\u043e\u0441\u0442\u044c \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>elevation<\/code> \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0442\u0435\u043d\u0435\u0439. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u2014 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0442\u0440\u0435\u0442\u0438\u0439 \u0432\u043e\u043f\u0440\u043e\u0441.<\/p>\n<p>\u041e\u0433\u043e\u0432\u043e\u0440\u044e\u0441\u044c, \u0447\u0442\u043e \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0442\u0435\u043d\u0435\u0439. \u0412 Android, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 API 21, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0442\u0435\u043c\u044b <a href=\"https:\/\/developer.android.com\/reference\/android\/R.attr#ambientShadowAlpha\">ambientShadowAlpha<\/a> \u0438 <a href=\"https:\/\/developer.android.com\/reference\/android\/R.attr#spotShadowAlpha\">spotShadowAlpha<\/a>. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u043d\u0435\u0439.<\/p>\n<p>\u0410 \u043f\u043e\u0437\u0436\u0435 \u0432 API 28 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0446\u0432\u0435\u0442\u0430 \u0442\u0435\u043d\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0442\u0435\u043c\u044b  <a href=\"https:\/\/developer.android.com\/reference\/android\/R.attr#outlineAmbientShadowColor\">outlineAmbientShadowColor<\/a> \u0438 <a href=\"https:\/\/developer.android.com\/reference\/android\/R.attr#outlineSpotShadowColor\">outlineSpotShadowColor<\/a>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 <code>View<\/code> \u2014 <a href=\"https:\/\/developer.android.com\/reference\/android\/view\/View.html#attr_android:outlineAmbientShadowColor\">outlineAmbientShadowColor<\/a> \u0438 <a href=\"https:\/\/developer.android.com\/reference\/android\/view\/View.html#attr_android:outlineSpotShadowColor\">outlineSpotShadowColor<\/a>.<\/p>\n<h2>Elevation<\/h2>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 <code>elevation<\/code> \u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0442\u0435\u043d\u0438, \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f.<\/p>\n<p>\u0423 \u043d\u0430\u0441 \u0432 \u0434\u0438\u0437\u0430\u0439\u043d\u0435 \u0435\u0441\u0442\u044c \u0442\u0440\u0438 \u0440\u0430\u0437\u043d\u043e\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u043d\u0435\u0439 (\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u043d\u0438\u0436\u0435): <\/p>\n<ul>\n<li>\n<p>S  \u2014 \u0440\u0430\u0437\u043c\u0435\u0440 12dp.<\/p>\n<\/li>\n<li>\n<p>M \u2014 \u0440\u0430\u0437\u043c\u0435\u0440 20dp.<\/p>\n<\/li>\n<li>\n<p>L \u2014 \u0440\u0430\u0437\u043c\u0435\u0440 32dp.<\/p>\n<\/li>\n<\/ul>\n<p>\u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u0435\u043d\u0438 \u0441\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u043e \u043e\u0441\u0438 Y. \u041d\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043c\u044b \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u043c, \u043d\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438. \u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043e API 28 \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0442\u0435\u043c\u044b. \u0417\u0430\u0434\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u043e \u0441\u0442\u0438\u043b\u044e \u0442\u0435\u043d\u044f\u043c \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438, \u043a\u0430\u043a \u0432 \u0434\u0438\u0437\u0430\u0439\u043d\u0435, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u0442. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435, \u0446\u0432\u0435\u0442 \u0442\u0435\u043d\u0438 \u0432 \u0434\u0438\u0437\u0430\u0439\u043d\u0435 \u043d\u0435 \u0447\u0435\u0440\u043d\u044b\u0439, \u043a\u0430\u043a \u0432 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u043c Android. \u0427\u0442\u043e \u0436, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u0441\u0445\u043e\u0434\u0441\u0442\u0432\u0430.<\/p>\n<p>\u0414\u043e\u043b\u0433\u043e \u0438 \u0443\u0441\u0435\u0440\u0434\u043d\u043e \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0432\u0441\u0435\u043c \u0442\u0440\u0435\u043c \u0442\u0435\u043d\u044f\u043c \u0441\u0440\u0430\u0437\u0443.<\/p>\n<pre><code class=\"xml\">\/\/ \u0442\u0435\u043c\u0430 &lt;item name=\"android:ambientShadowAlpha\">0.01&lt;\/item> &lt;item name=\"android:spotShadowAlpha\">0.08&lt;\/item>  \/\/ \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 elevatiom &lt;dimen name=\"elevation_s\">12dp&lt;\/dimen> &lt;dimen name=\"elevation_m\">24dp&lt;\/dimen> &lt;dimen name=\"elevation_l\">30dp&lt;\/dimen><\/code><\/pre>\n<figure class=\"bordered\"><figcaption>\u0422\u0435\u043d\u044c S \u2014 \u0434\u0438\u0437\u0430\u0439\u043d<\/figcaption><\/figure>\n<figure class=\"bordered\"><figcaption>\u0422\u0435\u043d\u044c S \u2014 elevation 8dp<\/figcaption><\/figure>\n<figure class=\"bordered\"><figcaption>\u0422\u0435\u043d\u044c M \u2014 \u0434\u0438\u0437\u0430\u0439\u043d <\/figcaption><\/figure>\n<figure class=\"\"><figcaption>\u0422\u0435\u043d\u044c M \u2014 elevation 24dp <\/figcaption><\/figure>\n<figure class=\"\"><figcaption>\u0422\u0435\u043d\u044c L \u2014 \u0434\u0438\u0437\u0430\u0439\u043d<\/figcaption><\/figure>\n<figure class=\"\"><figcaption>\u0422\u0435\u043d\u044c L \u2014 elevation 30dp <\/figcaption><\/figure>\n<p>\u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u043e. \u0422\u0435\u043d\u044c S \u0441\u043b\u0435\u0433\u043a\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u0434\u0432\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0441\u043d\u043e\u0441\u043d\u043e. \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u043e\u0447\u043d\u0435\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043e\u0431\u0449\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u0432\u0440\u044f\u0434 \u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u043d\u043e, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 API 28, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u0442\u043e\u0447\u043d\u043e\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0435\u0448\u0435\u043d\u0430, \u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0435\u0436\u0434\u0430\u0442\u044c \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u0430, \u0447\u0442\u043e \u0442\u0435\u043d\u044c S \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0435\u0433\u043a\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0434\u0438\u0437\u0430\u0439\u043d\u0430. \u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0440\u044f\u0434 \u043b\u0438 \u044d\u0442\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442, \u0434\u0430 \u0438 \u043a\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0438\u0437 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Android \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0430\u043a\u0438\u0435 \u043c\u0435\u043b\u043e\u0447\u0438.<\/p>\n<p>\u041d\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e. \u0412 Android \u0434\u0432\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0441\u0432\u0435\u0442\u0430: ambient light, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0432\u0435\u0442\u0438\u0442 \u0432\u043e \u0432\u0441\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0438 key light \u2014 \u0441\u0432\u0435\u0442\u0438\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e. \u041a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, <a href=\"https:\/\/medium.com\/android-news\/mastering-shadows-in-android-e883ad2c9d5b\">\u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0438 \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0430 \u044d\u0442\u0430 \u0442\u0435\u043c\u0430.<\/p>\n<figure class=\"full-width\"><figcaption>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0441\u0432\u0435\u0442\u0430 \u0432 Android<\/figcaption><\/figure>\n<p>\u0422\u043e\u0442, \u0447\u0442\u043e \u0441\u0432\u0435\u0442\u0438\u0442 \u0441\u0432\u0435\u0440\u0445\u0443 \u043f\u043e\u0434 \u0443\u0433\u043b\u043e\u043c, \u0438 \u0435\u0441\u0442\u044c key light. \u041e\u043d \u0434\u0430\u0435\u0442 \u044f\u0440\u043a\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u043d\u0443\u044e \u0442\u0435\u043d\u044c \u0432 \u043d\u0438\u0436\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u0418 \u0432\u043e\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u0442\u0435\u043d\u044c\u044e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 <code>elevation<\/code>, \u043f\u043e \u043c\u0435\u0440\u0435 \u043e\u0442\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043e\u0442 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430.<\/p>\n<figure class=\"\"><figcaption>\u0422\u0435\u043d\u044c L \u2014 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 <\/figcaption><\/figure>\n<figure class=\"\"><figcaption>\u0422\u0435\u043d\u044c L \u2014 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u043d\u0438\u0436\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430<\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u0432 \u0436\u0438\u0437\u043d\u0438: \u0447\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u043e\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0441\u0432\u0435\u0442\u0430, \u0442\u0435\u043c \u0434\u043b\u0438\u043d\u043d\u0435\u0435 \u0442\u0435\u043d\u044c. \u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u043d\u0430 \u044d\u0442\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c? \u0412 <a href=\"https:\/\/blog.sebastiano.dev\/playing-with-elevation-in-android-part-2\/\">\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 Don\u2019t try this at home \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0434\u0430, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u041d\u043e \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0431\u044b \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0438 \u043d\u0430 \u043a\u043e\u0434-\u0440\u0435\u0432\u044c\u044e \u0437\u0430\u043a\u0440\u044b\u043b\u0438 \u0433\u043b\u0430\u0437\u0430 \u043d\u0430 \u044d\u0442\u043e\u0442 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u0445\u0430\u043a, \u044d\u0442\u043e \u043d\u0435 \u0440\u0435\u0448\u0438\u043b\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e. \u0413\u0434\u0435 \u0431\u044b \u043d\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u043b\u0441\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0432\u0435\u0442\u0430, \u0442\u0435\u043d\u0438 \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u044b\u043b\u0438 \u0431\u044b \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u043c\u0438. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0442\u043e\u043c\u0443 \u2014 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 <code>elevation<\/code>, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430.<\/p>\n<p>\u0418\u0437\u0440\u044f\u0434\u043d\u043e \u0440\u0430\u0441\u0441\u0442\u0440\u043e\u0438\u0432\u0448\u0438\u0441\u044c, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043f\u043b\u0430\u043d\u0443 \u0411 \u2014 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043d\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<h2>MaterialShapeDrawable<\/h2>\n<p>\u0420\u0430\u0437 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0441 <code>elevation<\/code>, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434. \u0412\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0432 Material \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0442\u0435\u043d\u0435\u0439 \u0438 \u043d\u0430 \u0430\u043d\u0442\u0438\u0447\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e.<\/p>\n<p>\u0417\u0430\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0435\u043c \u0432\u043d\u0443\u0442\u0440\u044c <a href=\"https:\/\/developer.android.com\/reference\/com\/google\/android\/material\/shape\/MaterialShapeDrawable\">MaterialShapeDrawable<\/a> \u0438 \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0430 \u043f\u0430\u0440\u0443 \u0441 \u043d\u0435\u043a\u0438\u043c <a href=\"https:\/\/github.com\/material-components\/material-components-android\/blob\/master\/lib\/java\/com\/google\/android\/material\/shadow\/ShadowRenderer.java\">ShadowRenderer<\/a> \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u0432\u0435\u0449\u0430\u043c\u0438. \u041f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u0444\u043e\u0440\u043c\u044b \u0442\u0435\u043d\u044c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432 <a href=\"https:\/\/developer.android.com\/reference\/android\/graphics\/LinearGradient\">LinearGradient<\/a> \u0438 <a href=\"https:\/\/developer.android.com\/reference\/android\/graphics\/RadialGradient\">RadialGradient<\/a>. \u0422\u043e \u0435\u0441\u0442\u044c, \u0442\u0435\u043d\u044c \u2014 \u044d\u0442\u043e \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u0432\u043e\u043a\u0440\u0443\u0433 \u0444\u043e\u0440\u043c\u044b.<\/p>\n<p>\u0418\u0434\u0435\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0435\u0435 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0443\u044e \u0432\u044c\u044e\u0448\u043a\u0443 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f.<\/p>\n<pre><code class=\"kotlin\">val shape = ShapeAppearanceModel.builder()   .setAllCornerSizes(16.toPx())   .build()  val drawable = MaterialShapeDrawable(shape) drawable.fillColor = ColorStateList.valueOf(Color.WHITE) drawable.shadowVerticalOffset = 8.toPx() drawable.shadowRadius = 32.toPx() drawable.shadowCompatibilityMode = MaterialShapeDrawable.SHADOW_COMPAT_MODE_ALWAYS  background = drawable<\/code><\/pre>\n<figure class=\"full-width\"><figcaption>\u0422\u0435\u043d\u044c MaterialShapeDrawable<\/figcaption><\/figure>\n<p>\u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0443 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u0430 \u0437\u0430\u0448\u0438\u0442\u044b \u0432 <a href=\"https:\/\/github.com\/material-components\/material-components-android\/blob\/master\/lib\/java\/com\/google\/android\/material\/shadow\/ShadowRenderer.java\">ShadowRenderer<\/a>. \u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0435\u043d\u044c \u043f\u043e \u0441\u0432\u043e\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043a\u043e\u0434, \u0440\u0430\u0437\u0431\u0440\u043e\u0441\u0430\u043d\u043d\u044b\u0439 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043a\u043b\u0430\u0441\u0441\u0430\u043c, \u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442. <\/p>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0436\u0435\u043b\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435\u0433\u043e. \u0420\u0430\u0434\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430 \u0440\u0435\u0448\u0435\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0432\u0435\u0441\u0438\u0442\u044c \u043d\u0430 \u0432\u044c\u044e\u0448\u043a\u0443 \u0430\u043d\u0438\u043c\u0430\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u0435\u043d\u044f\u043b \u0435\u0435 \u0440\u0430\u0437\u043c\u0435\u0440, \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430. \u041b\u0430\u0433\u0438, \u0434\u0430\u0436\u0435 \u043d\u0430 \u0440\u0435\u043b\u0438\u0437\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0435, \u0431\u044b\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u043d\u044b \u043d\u0435\u0432\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c \u0433\u043b\u0430\u0437\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b \u0438 <code>systrace<\/code>. <\/p>\n<figure class=\"full-width\"><figcaption>\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043a\u0430\u0434\u0440\u0430 \u2014 18 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434<\/figcaption><\/figure>\n<p>\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u2014 18 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434. \u042d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e <code>draw<\/code> \u043e\u0434\u043d\u043e\u0439 \u0432\u044c\u044e\u0448\u043a\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435. \u0410 <code>draw<\/code> \u2014 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f ? <\/p>\n<p>\u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u043f\u043e\u0438\u0449\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041d\u043e, \u0441\u0442\u043e\u0438\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0438\u0434\u0435\u044e \u0441 <code>Drawable<\/code> \u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u043e\u0439 \u0442\u0435\u043d\u0438 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0433\u0440\u0430\u043d\u0438\u0446 <code>View<\/code> \u044f \u0432\u0437\u044f\u043b \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c.<\/p>\n<h2>\u041a\u0430\u043a \u0435\u0449\u0435 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043d\u044c<\/h2>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0430\u0448\u043b\u0438\u0441\u044c \u0435\u0449\u0435 3 \u0441\u043f\u043e\u0441\u043e\u0431\u0430, \u043f\u043e\u043c\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435.<\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/developer.android.com\/reference\/android\/graphics\/Paint#setShadowLayer(float,%20float,%20float,%20int)\">Paint.setShadowLayer<\/a> \u2014 \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439. \u041c\u0438\u043d\u0438\u043c\u0443\u043c \u043a\u043e\u0434\u0430, \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f (\u0447\u0442\u043e \u0434\u043b\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u2014 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442).<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/developer.android.com\/reference\/android\/graphics\/BlurMaskFilter\">BlurMaskFilter<\/a> \u2014 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0435, \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u0434\u0430, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/developer.android.com\/reference\/android\/renderscript\/ScriptIntrinsicBlur\">ScriptIntrinsicBlur<\/a> \u2014 \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0435\u0449\u0435 \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0442\u0430\u043a\u0436\u0435 \u0441\u043c\u0443\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 Deprecated \u0438 <a href=\"https:\/\/developer.android.com\/guide\/topics\/renderscript\/migrate\">\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<\/li>\n<\/ol>\n<p>\u0415\u0441\u0442\u044c \u0435\u0449\u0435 <a href=\"https:\/\/github.com\/harjot-oberai\/MaterialShadows\">\u044d\u043a\u0437\u043e\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431<\/a>, \u0443 \u043c\u0435\u043d\u044f \u043e\u043d \u043d\u0435 \u0437\u0430\u0432\u0435\u043b\u0441\u044f, \u0438 \u044f \u0442\u0430\u043a \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0438 \u043d\u0435 \u043f\u043e\u043d\u044f\u043b, \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0415\u0441\u043b\u0438 \u0437\u0430\u0432\u0435\u0434\u0435\u0442\u0435 \u0438 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u0442\u0435\u0441\u044c, \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<\/p>\n<p>\u0420\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u043f\u0443\u043d\u043a\u0442\u044b \u043d\u0435 \u0432\u0438\u0436\u0443 \u0441\u043c\u044b\u0441\u043b\u0430. \u0415\u0441\u0442\u044c \u043c\u0430\u0441\u0441\u0430 \u0441\u0442\u0430\u0442\u0435\u0439 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, <a href=\"https:\/\/medium.com\/@yuriyskul\/different-ways-to-create-glowing-shapes-in-android-canvas-8b73010411fe\">\u0432\u043e\u0442 \u044d\u0442\u0430<\/a>. \u0414\u043b\u044f \u0441\u0435\u0431\u044f \u0440\u0435\u0448\u0438\u043b \u0432\u0437\u044f\u0442\u044c \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431. \u0415\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0439\u0434\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439.<\/p>\n<h2>\u0410\u043d\u0430\u043b\u0438\u0437 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439<\/h2>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0441\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438\u0441\u044c. \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c, \u0447\u0442\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c. \u0412 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u0443\u0434\u043e\u0431\u043d\u043e, \u043a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u0442\u044c <code>elevation<\/code>. <\/p>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 \u0442\u0435\u043d\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u044e <code>View<\/code> \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435, \u043a\u0430\u043a\u043e\u0432\u043e \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f\u044b \u0438\u043b\u0438 \u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c <code>View<\/code>, \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u043b\u0438\u044f\u0435\u0442 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c\u0430\u044f \u0435\u0439 \u0442\u0435\u043d\u044c? \u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0442\u0435\u043d\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0432\u0435\u0440\u0441\u0442\u043a\u0443 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u044d\u043a\u0440\u0430\u043d\u043e\u0432. <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u0435\u043d\u0438 \u0432 XML (\u0432 \u0432\u0435\u0440\u0441\u0442\u043a\u0435 \u0438\u043b\u0438 \u0432 \u0441\u0442\u0438\u043b\u0435) \u0438, \u0447\u0442\u043e \u043d\u0435\u043c\u0430\u043b\u043e\u0432\u0430\u0436\u043d\u043e, \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u043f\u0440\u0435\u0432\u044c\u044e Android Studio.<\/p>\n<p>\u0415\u0449\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u043c\u0435\u0442\u044c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043d\u044c \u0443 \u043b\u044e\u0431\u044b\u0445 <code>View<\/code>, \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0435\u0441\u0442\u044c \u043b\u0438 \u0443 \u043d\u0438\u0445 \u0444\u043e\u043d \u0438\u043b\u0438 <code>elevation<\/code>. \u0418 \u0441\u043e\u0432\u0441\u0435\u043c \u0445\u043e\u0440\u043e\u0448\u043e, \u0435\u0441\u043b\u0438 \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0444\u0440\u0435\u0439\u043c.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0442\u0435\u043d\u044c \u0443 \u043d\u0430\u0441 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0444\u043e\u0440\u043c\u0430: \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a (\u0441\u043e \u0441\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0443\u0433\u043b\u0430\u043c\u0438 \u0438\u043b\u0438 \u0431\u0435\u0437), \u043e\u0432\u0430\u043b, \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043c\u043e\u0434\u043d\u044b\u0439 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Squircle\">squircle<\/a>, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u043e\u0442\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u043e\u0432. <\/p>\n<p>\u0421\u0443\u043c\u043c\u0430\u0440\u043d\u043e \u0432\u0441\u0435 \u044d\u0442\u043e \u0437\u0432\u0443\u0447\u0438\u0442, \u043a\u0430\u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0443\u0436\u043d\u044b\u0445 <code>View<\/code> \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043b\u043e\u0433\u0438\u043a\u0443 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0442\u0435\u043d\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0432 \u043e\u0431\u0449\u0438\u0439 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441. \u0422\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0435\u043d\u0438 \u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u0445 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443.<\/p>\n<p>\u041f\u043b\u0430\u043d \u0440\u0435\u0448\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c <code>Drawable<\/code>, \u0443\u043c\u0435\u044e\u0449\u0438\u0439 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043d\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u043f\u0438\u0448\u0435\u043c <code>View<\/code>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 \u044d\u0442\u043e\u0442 <code>Drawable<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0437\u043c\u0435\u0440\u0438\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<h2>NinePatchDrawable<\/h2>\n<p>\u0412 \u043e\u0434\u043d\u043e\u0439 <a href=\"https:\/\/habr.com\/ru\/company\/citymobil\/blog\/652955\/\">\u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043f\u0440\u043e \u0442\u0435\u043d\u0438 \u043d\u0430 Android \u043e\u0442 \u044d\u0442\u043e\u0439 \u0438\u0434\u0435\u0438 \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c. \u0421\u0442\u0430\u0442\u044c\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f, \u043d\u043e \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u0430\u0441\u044c \u043c\u043d\u0435 \u043d\u0430 \u0433\u043b\u0430\u0437\u0430 \u0432 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u044f \u0438\u0441\u043a\u0430\u043b \u0440\u0435\u0448\u0435\u043d\u0438\u0435. <\/p>\n<p>\u0418\u0442\u0430\u043a, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 9-patch \u0438 \u0437\u0430\u0447\u0435\u043c \u043e\u043d \u043d\u0443\u0436\u0435\u043d? \u0422\u0443\u0442 \u043c\u043d\u0435, \u043a\u0430\u043a \u0441\u0442\u0430\u0440\u043e\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0438\u0433\u0440 \u043d\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Macromedia_Flash\">Marcomedia Flash<\/a> (\u0434\u0430 \u0443\u043f\u043e\u043a\u043e\u0439 \u0413\u043e\u0441\u043f\u043e\u0434\u044c \u0435\u0433\u043e \u0434\u0443\u0448\u0443 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0434\u0443\u0448\u043e\u0439 \u0421\u0442\u0438\u0432\u0430), \u043d\u0443\u0436\u043d\u043e \u0441\u043c\u0430\u0445\u043d\u0443\u0442\u044c \u043d\u043e\u0441\u0442\u0430\u043b\u044c\u0433\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u043b\u0435\u0437\u0443. \u042d\u0442\u0443 \u0442\u0435\u0445\u043d\u0438\u043a\u0443 \u044f \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u043e\u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b \u0442\u0430\u043c, \u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/9-slice_scaling\">\u00ab\u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u044f\u00bb<\/a> \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043c \u043e\u043d\u0430 \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0438 \u0431\u044b\u043b\u0430 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u0430.<\/p>\n<p>\u0421\u0443\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0430\u0441\u0442\u0440\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 9 \u0447\u0430\u0441\u0442\u0435\u0439, \u0438 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438, \u043a\u0440\u043e\u043c\u0435 \u0443\u0433\u043b\u043e\u0432. \u0422\u0430\u043a \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c \u0434\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u0435\u0437 \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u043f\u043e\u0442\u0435\u0440\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u0441\u044f \u0438 \u043f\u0430\u043c\u044f\u0442\u044c (\u0440\u0430\u0437\u043c\u0435\u0440 <code>Bitmap<\/code> \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0435\u043d), \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f (\u043e\u0442\u0434\u0430\u0442\u044c <code>Bitmap<\/code> \u043d\u0430 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442). \u041d\u0443 \u0430 GPU \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u0439 <code>Bitmap<\/code> \u043f\u043e\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, Android \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c <a href=\"https:\/\/developer.android.com\/reference\/android\/graphics\/drawable\/NinePatchDrawable\">NinePatchDrawable<\/a> \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e. \u0410 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438 \u0444\u043e\u0440\u043c\u0430 \u0444\u0438\u0433\u0443\u0440\u044b \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u0435\u043d\u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b \u2014 \u0437\u0430\u0434\u0430\u0447\u0430 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430\u044f.<\/p>\n<h2>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h2>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u0444\u043e\u0440\u043c\u0443 \u0442\u0435\u043d\u0438:<\/p>\n<pre><code class=\"kotlin\">data class ShadowSpec(   @ColorInt val shadowColor: Int = Color.TRANSPARENT,   @Px val shadowOffsetX: Float = 0f,   @Px val shadowOffsetY: Float = 0f,   @Px val shadowSize: Float = 0f,   val cornerSize: CornerSize? = null,   val cornerSizeTopLeft: CornerSize? = null,   val cornerSizeTopRight: CornerSize? = null,   val cornerSizeBottomLeft: CornerSize? = null,   val cornerSizeBottomRight: CornerSize? = null )<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u044b \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/developer.android.com\/reference\/com\/google\/android\/material\/shape\/ShapeAppearanceModel\">ShapeAppearanceModel<\/a>, \u0430 \u0442\u0430\u043a\u0436\u0435 <a href=\"https:\/\/developer.android.com\/reference\/com\/google\/android\/material\/shape\/ShapeAppearancePathProvider\">ShapeAppearancePathProvider<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442 <a href=\"https:\/\/developer.android.com\/reference\/android\/graphics\/Path\">Path<\/a>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438.<\/p>\n<p>\u0412 \u043a\u043e\u0434\u0435 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"kotlin\">\/\/ \u0441\u0442\u0440\u043e\u0438\u043c \u0444\u043e\u0440\u043c\u0443 - \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c Material val path = Path() val provider = ShapeAppearancePathProvider() val model = ShapeAppearanceModel.Builder()   .setTopLeftCorner(CornerFamily.ROUNDED, topLeftCornerSize)   .setTopRightCorner(CornerFamily.ROUNDED, topRightCornerSize)   .setBottomLeftCorner(CornerFamily.ROUNDED, bottomLeftCornerSize)<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-340402","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/340402","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=340402"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/340402\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=340402"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=340402"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=340402"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}