{"id":288604,"date":"2018-08-28T07:30:02","date_gmt":"2018-08-28T03:30:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=288604"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=288604","title":{"rendered":"\u0410\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u043d\u0430 Android"},"content":{"rendered":"\n<div data-io-article-url=\"https:\/\/habr.com\/post\/420919\/\" class=\"post__text post__text-html js-mediator-article\">\n<p>\u041a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0438 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 UI \u2014 \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f Android \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043b\u044f \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u0438\u0437\u0430\u0439\u043d\u0430. \u0427\u0430\u0441\u0442\u043e \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u043b\u0435 \u0441 \u0447\u0438\u0441\u043b\u043e\u043c \u0438\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u043b\u0438 \u0441\u0443\u043c\u043c\u0443 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432 \u0437\u0430 \u043c\u0435\u0441\u044f\u0446. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0442\u0430\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043b\u0435\u0433\u043a\u043e \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e <code>TextView<\/code>, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0435\u0435 \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e \u0438 \u0435\u0449\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ma\/qy\/zn\/maqyznzolbevahrngecio-p3g0a.gif\" alt=\"demo\"><\/p>\n<p>  <\/p>\n<p>\u041d\u0430 YouTube \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e <strong><a href=\"https:\/\/www.youtube.com\/watch?v=tTQlPH3ROMw\">Demo-\u0432\u0438\u0434\u0435\u043e<\/a><\/strong>.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u0439\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0432\u0441\u0435 \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h2 id=\"odna-staticheskaya-cifra\">\u041e\u0434\u043d\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0446\u0438\u0444\u0440\u0430<\/h2>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u0446\u0438\u0444\u0440 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f 8 \u044d\u0442\u043e <code>res\/drawable\/viv_vd_pathmorph_digits_eight.xml<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"xml\">&lt;vector     xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"     android:width=\"@dimen\/viv_digit_size\"     android:height=\"@dimen\/viv_digit_size\"     android:viewportHeight=\"1\"     android:viewportWidth=\"1\"&gt;      &lt;group         android:translateX=\"@dimen\/viv_digit_translateX\"         android:translateY=\"@dimen\/viv_digit_translateY\"&gt;         &lt;path             android:name=\"iconPath\"             android:pathData=\"@string\/viv_path_eight\"             android:strokeColor=\"@color\/viv_digit_color_default\"             android:strokeWidth=\"@dimen\/viv_digit_strokewidth\"\/&gt;     &lt;\/group&gt;  &lt;\/vector&gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0446\u0438\u0444\u0440 0-9 \u0442\u0430\u043a\u0436\u0435 \u0442\u0430\u043a\u0436\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u043a\u0430 &#171;\u043c\u0438\u043d\u0443\u0441&#187; (<code>viv_vd_pathmorph_digits_minus.xml<\/code>) \u0438 \u043f\u0443\u0441\u0442\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (<code>viv_vd_pathmorph_digits_nth.xml<\/code>), \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u0447\u0435\u0437\u0430\u044e\u0449\u0438\u0439 \u0440\u0430\u0437\u0440\u044f\u0434 \u0447\u0438\u0441\u043b\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438.<br \/>  XML-\u0444\u0430\u0439\u043b\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u043c <code>android:pathData<\/code>. \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439.<br \/>  \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0446\u0438\u0444\u0440 0-9 \u0431\u044b\u043b\u0438 \u0432\u0437\u044f\u0442\u044b <a href=\"https:\/\/github.com\/alexjlockwood\/adp-delightful-details\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>  <\/p>\n<h2 id=\"animaciya-perehoda\">\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430<\/h2>\n<p>  <\/p>\n<p>\u041e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (<code>&lt;animated-vector&gt;<\/code>). \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0446\u0438\u0444\u0440\u044b 2 \u0432 \u0446\u0438\u0444\u0440\u0443 5 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u0430\u0439\u043b <code>res\/drawable\/viv_avd_pathmorph_digits_2_to_5.xml<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"xml\">&lt;animated-vector   xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"   xmlns:aapt=\"http:\/\/schemas.android.com\/aapt\"   android:drawable=\"@drawable\/viv_vd_pathmorph_digits_zero\"&gt;    &lt;target android:name=\"iconPath\"&gt;     &lt;aapt:attr name=\"android:animation\"&gt;       &lt;objectAnimator         android:duration=\"@integer\/viv_animation_duration\"         android:propertyName=\"pathData\"         android:valueFrom=\"@string\/viv_path_two\"         android:valueTo=\"@string\/viv_path_five\"         android:valueType=\"pathType\"\/&gt;     &lt;\/aapt:attr&gt;   &lt;\/target&gt;  &lt;\/animated-vector&gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0437\u0430\u0434\u0430\u0435\u043c \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441. \u0412\u0441\u0435\u0433\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c 12 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 (0 \u2014 9 + &#171;\u043c\u0438\u043d\u0443\u0441&#187; + &#171;\u043f\u0443\u0441\u0442\u043e\u0442\u0430&#187;), \u043a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437 \u043d\u0438\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0432 \u043b\u044e\u0431\u043e\u0435 \u0438\u0437 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0442\u044b \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f 12 * 11 = 132 \u0444\u0430\u0439\u043b\u0430 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438. \u041e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438 <code>android:valueFrom<\/code> \u0438 <code>android:valueTo<\/code>, \u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u0445 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u2014 \u043d\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440:<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0444\u0430\u0439\u043b\u043e\u0432 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>import java.io.File import java.io.FileWriter  fun main(args: Array&lt;String&gt;) {     val names = arrayOf(             \"zero\", \"one\", \"two\", \"three\",             \"four\", \"five\", \"six\", \"seven\",             \"eight\", \"nine\", \"nth\", \"minus\"     )      fun getLetter(i: Int) = when (i) {         in 0..9 -&gt; i.toString()         10 -&gt; \"n\"         11 -&gt; \"m\"         else -&gt; null!!     }      val dirName = \"viv_out\"     File(dirName).mkdir()     for (from in 0..11) {         for (to in 0..11) {             if (from == to) continue             FileWriter(File(dirName, \"viv_avd_pathmorph_digits_${getLetter(from)}_to_${getLetter(to)}.xml\")).use {                 it.write(\"\"\" &lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt; &lt;animated-vector   xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"   xmlns:aapt=\"http:\/\/schemas.android.com\/aapt\"   android:drawable=\"@drawable\/viv_vd_pathmorph_digits_zero\"&gt;    &lt;target android:name=\"iconPath\"&gt;     &lt;aapt:attr name=\"android:animation\"&gt;       &lt;objectAnimator         android:duration=\"@integer\/viv_animation_duration\"         android:propertyName=\"pathData\"         android:valueFrom=\"@string\/viv_path_${names[from]}\"         android:valueTo=\"@string\/viv_path_${names[to]}\"         android:valueType=\"pathType\"\/&gt;     &lt;\/aapt:attr&gt;   &lt;\/target&gt;  &lt;\/animated-vector&gt;  \"\"\".trimIndent())             }         }     } }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h2 id=\"vse-vmeste\">\u0412\u0441\u0435 \u0432\u043c\u0435\u0441\u0442\u0435<\/h2>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 <code>&lt;animated-selector&gt;<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043a\u0430\u043a \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 <code>&lt;selector&gt;<\/code>, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043e\u0434\u043d\u043e \u0438\u0437 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u042d\u0442\u043e\u0442 drawable-\u0440\u0435\u0441\u0443\u0440\u0441 (<a href=\"https:\/\/github.com\/qwert2603\/VectorIntegerView\/blob\/master\/library\/src\/main\/res\/drawable\/viv_asl_pathmorph_digits.xml\"><code>res\/drawable\/viv_asl_pathmorph_digits.xml<\/code><\/a>) \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0442\u0435\u0433\u0430\u043c\u0438 <code>&lt;item&gt;<\/code> \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 <code>app:viv_state_three<\/code>), \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0434\u0430\u043d\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u041a\u0430\u0436\u0434\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 <code>id<\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0439 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"xml\">&lt;item         android:id=\"@+id\/three\"         android:drawable=\"@drawable\/viv_vd_pathmorph_digits_three\"         app:viv_state_three=\"true\" \/&gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 <code>res\/values\/attrs.xml<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"xml\">&lt;resources&gt;     &lt;declare-styleable name=\"viv_DigitState\"&gt;         &lt;attr name=\"viv_state_zero\" format=\"boolean\" \/&gt;         &lt;attr name=\"viv_state_one\" format=\"boolean\" \/&gt;         &lt;attr name=\"viv_state_two\" format=\"boolean\" \/&gt;         &lt;attr name=\"viv_state_three\" format=\"boolean\" \/&gt;         &lt;attr name=\"viv_state_four\" format=\"boolean\" \/&gt;         &lt;attr name=\"viv_state_five\" format=\"boolean\" \/&gt;         &lt;attr name=\"viv_state_six\" format=\"boolean\" \/&gt;         &lt;attr name=\"viv_state_seven\" format=\"boolean\" \/&gt;         &lt;attr name=\"viv_state_eight\" format=\"boolean\" \/&gt;         &lt;attr name=\"viv_state_nine\" format=\"boolean\" \/&gt;         &lt;attr name=\"viv_state_nth\" format=\"boolean\" \/&gt;         &lt;attr name=\"viv_state_minus\" format=\"boolean\" \/&gt;     &lt;\/declare-styleable&gt; &lt;\/resources&gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438 \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0442\u0435\u0433\u0430\u043c\u0438 <code>&lt;transition&gt;<\/code> \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c <code>&lt;animated-vector&gt;<\/code>, \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434, \u0430 \u0442\u0430\u043a\u0436\u0435 <code>id<\/code> \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"xml\">&lt;transition         android:drawable=\"@drawable\/viv_avd_pathmorph_digits_6_to_2\"         android:fromId=\"@id\/six\"         android:toId=\"@id\/two\" \/&gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 <a href=\"https:\/\/github.com\/qwert2603\/VectorIntegerView\/blob\/master\/library\/src\/main\/res\/drawable\/viv_asl_pathmorph_digits.xml\"><code>res\/drawable\/viv_asl_pathmorph_digits.xml<\/code><\/a> \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e-\u0442\u0430\u043a\u0438 \u043e\u0434\u043d\u043e\u0442\u0438\u043f\u043d\u043e, \u0438 \u0434\u043b\u044f \u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440. \u042d\u0442\u043e\u0442 drawable-\u0440\u0435\u0441\u0443\u0440\u0441 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 12 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0438 132 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.<\/p>\n<p>  <\/p>\n<h2 id=\"customview\">CustomView<\/h2>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c <code>drawable<\/code>, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0446\u0438\u0444\u0440\u0443 \u0438 \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435, \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c <strong><code>VectorIntegerView<\/code><\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0447\u0438\u0441\u043b\u043e, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432, \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f\u043c\u0438. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u044b \u0431\u044b\u043b \u0432\u044b\u0431\u0440\u0430\u043d <code>RecyclerView<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0446\u0438\u0444\u0440 \u0432 \u0447\u0438\u0441\u043b\u0435 \u2014 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u0430 <code>RecyclerView<\/code> \u2014 \u044d\u0442\u043e \u043b\u0443\u0447\u0448\u0438\u0439 \u0432 Android \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 (\u0446\u0438\u0444\u0440) \u0432 \u0440\u044f\u0434. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, <code>RecyclerView<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 <code>ItemAnimator<\/code>.<\/p>\n<p>  <\/p>\n<h4 id=\"digitadapter-i-digitviewholder\">DigitAdapter \u0438 DigitViewHolder<\/h4>\n<p>  <\/p>\n<p>\u041d\u0430\u0447\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f <code>DigitViewHolder<\/code>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0433\u043e \u043e\u0434\u043d\u0443 \u0446\u0438\u0444\u0440\u0443. <code>View<\/code> \u0442\u0430\u043a\u043e\u0433\u043e <code>DigitViewHolder<\/code> \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e <code>ImageView<\/code>, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e <code>android:src=\"@drawable\/viv_asl_pathmorph_digits\"<\/code>. \u0414\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e\u0439 \u0446\u0438\u0444\u0440\u044b \u0432 <code>ImageView<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 <code>mImageView.setImageState(state, true);<\/code>. \u041c\u0430\u0441\u0441\u0438\u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f <code>state<\/code> \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u0446\u0438\u0444\u0440\u044b \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f <code>viv_DigitState<\/code>, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e\u0439 \u0446\u0438\u0444\u0440\u044b \u0432 `ImageView`<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">private static final int[] ATTRS = {         R.attr.viv_state_zero,         R.attr.viv_state_one,         R.attr.viv_state_two,         R.attr.viv_state_three,         R.attr.viv_state_four,         R.attr.viv_state_five,         R.attr.viv_state_six,         R.attr.viv_state_seven,         R.attr.viv_state_eight,         R.attr.viv_state_nine,         R.attr.viv_state_nth,         R.attr.viv_state_minus, };  void setDigit(@IntRange(from = 0, to = VectorIntegerView.MAX_DIGIT) int digit) {     int[] state = new int[ATTRS.length];      for (int i = 0; i &lt; ATTRS.length; i++) {         if (i == digit) {             state[i] = ATTRS[i];         } else {             state[i] = -ATTRS[i];         }     }      mImageView.setImageState(state, true); }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0410\u0434\u0430\u043f\u0442\u0435\u0440 <code>DigitAdapter<\/code> \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 <code>DigitViewHolder<\/code> \u0438 \u0437\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e\u0439 \u0446\u0438\u0444\u0440\u044b \u0432 \u043d\u0443\u0436\u043d\u043e\u043c <code>DigitViewHolder<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>DiffUtil<\/code>. \u0421 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0437\u0440\u044f\u0434 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0430\u043d\u0438\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u0440\u044f\u0434 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432, \u0441\u043e\u0442\u043d\u0438 \u2014 \u0432 \u0441\u043e\u0442\u043d\u0438, \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u2014 \u0432 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0421\u0438\u043c\u0432\u043e\u043b &#171;\u043c\u0438\u043d\u0443\u0441&#187; \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c \u0441\u043e\u0431\u043e\u0439 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0438\u043b\u0438 \u0438\u0441\u0447\u0435\u0437\u0430\u0442\u044c, \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044f\u0441\u044c \u0432 \u043f\u0443\u0441\u0442\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (<code>viv_vd_pathmorph_digits_nth.xml<\/code>).<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 <code>DiffUtil.Callback<\/code> \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <code>areItemsTheSame<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f <code>true<\/code> \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0440\u0430\u0437\u0440\u044f\u0434\u044b \u0447\u0438\u0441\u0435\u043b. &#171;\u041c\u0438\u043d\u0443\u0441&#187; \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0441\u043e\u0431\u044b\u043c \u0440\u0430\u0437\u0440\u044f\u0434\u043e\u043c, \u0438 &#171;\u043c\u0438\u043d\u0443\u0441&#187; \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0440\u0430\u0432\u0435\u043d &#171;\u043c\u0438\u043d\u0443\u0441\u0443&#187; \u0438\u0437 \u043d\u043e\u0432\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043c\u0435\u0442\u043e\u0434\u0435 <code>areContentsTheSame<\/code> \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0438 \u043d\u043e\u0432\u043e\u043c \u0447\u0438\u0441\u043b\u0430\u0445. \u0421\u0430\u043c\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432 <a href=\"https:\/\/github.com\/qwert2603\/VectorIntegerView\/blob\/master\/library\/src\/main\/java\/com\/qwert2603\/vector_integer_view\/DigitAdapter.java#L57\"><code>DigitAdapter<\/code><\/a>.<\/p>\n<p>  <\/p>\n<h4 id=\"digititemanimator\">DigitItemAnimator<\/h4>\n<p>  <\/p>\n<p>\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u043b\u0430, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e, \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435, \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0438\u0441\u0447\u0435\u0437\u043d\u043e\u0432\u0435\u043d\u0438\u0435 \u0446\u0438\u0444\u0440, \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u0430\u043d\u0438\u043c\u0430\u0442\u043e\u0440\u043e\u043c \u0434\u043b\u044f <code>RecyclerView<\/code> \u2014 <a href=\"https:\/\/github.com\/qwert2603\/VectorIntegerView\/blob\/master\/library\/src\/main\/java\/com\/qwert2603\/vector_integer_view\/DigitItemAnimator.java\"><code>DigitItemAnimator<\/code><\/a>. \u0414\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u0442 \u0436\u0435 <code>integer<\/code>-\u0440\u0435\u0441\u0443\u0440\u0441, \u0447\u0442\u043e \u0438 \u0432 <code>&lt;animated-vector&gt;<\/code>, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">private final int animationDuration;  DigitItemAnimator(@NonNull Resources resources) {     animationDuration = resources.getInteger(R.integer.viv_animation_duration); }  @Override public long getMoveDuration() { return animationDuration; }  @Override public long getAddDuration() { return animationDuration; }  @Override public long getRemoveDuration() { return animationDuration; }  @Override public long getChangeDuration() { return animationDuration; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c <code>DigitItemAnimator<\/code> \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0430\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0446\u0438\u0444\u0440\u044b (\u043c\u0435\u0442\u043e\u0434 <code>animateAdd<\/code>) \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043e\u0442 \u043f\u0443\u0441\u0442\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043a \u043d\u0443\u0436\u043d\u043e\u0439 \u0446\u0438\u0444\u0440\u0435 \u0438\u043b\u0438 \u0437\u043d\u0430\u043a\u0443 &#171;\u043c\u0438\u043d\u0443\u0441&#187;. \u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u0438\u0441\u0447\u0435\u0437\u043d\u043e\u0432\u0435\u043d\u0438\u044f (\u043c\u0435\u0442\u043e\u0434 <code>animateRemove<\/code>) \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043e\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u0446\u0438\u0444\u0440\u044b \u0438\u043b\u0438 \u0437\u043d\u0430\u043a\u0430 &#171;\u043c\u0438\u043d\u0443\u0441&#187; \u043a \u043f\u0443\u0441\u0442\u043e\u043c\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0446\u0438\u0444\u0440\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u0446\u0438\u0444\u0440\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430 <code>recordPreLayoutInformation<\/code>. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <code>animateChange<\/code> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u0446\u0438\u0444\u0440\u044b \u043a \u043d\u043e\u0432\u043e\u0439.<\/p>\n<p>  <\/p>\n<p><code>RecyclerView.ItemAnimator<\/code> \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043c\u0435\u0442\u043e\u0434\u044b, \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 <code>animateAdd<\/code>, <code>animateRemove<\/code> \u0438 <code>animateChange<\/code> \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u044b\u0437\u043e\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439, \u0440\u0430\u0432\u043d\u043e\u0439 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <code>animateAdd<\/code> \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 <code>dispatchAddFinished<\/code> \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439, \u0440\u0430\u0432\u043d\u043e\u0439 <code>@integer\/viv_animation_duration<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">@Override public boolean animateAdd(final RecyclerView.ViewHolder holder) {     final DigitAdapter.DigitViewHolder digitViewHolder = (DigitAdapter.DigitViewHolder) holder;     int a = digitViewHolder.d;     digitViewHolder.setDigit(VectorIntegerView.DIGIT_NTH);     digitViewHolder.setDigit(a);     holder.itemView.postDelayed(new Runnable() {         @Override         public void run() {             dispatchAddFinished(holder);         }     }, animationDuration);     return false; }<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"vectorintegerview\">VectorIntegerView<\/h4>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c CustomView \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0435\u0433\u043e xml-\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c <code>&lt;declare-styleable&gt;<\/code> \u0432 \u0444\u0430\u0439\u043b <code>res\/values\/attrs.xml<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"xml\">&lt;declare-styleable name=\"VectorIntegerView\"&gt;     &lt;attr name=\"viv_vector_integer\" format=\"integer\" \/&gt;     &lt;attr name=\"viv_digit_color\" format=\"color\" \/&gt; &lt;\/declare-styleable&gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 <code>VectorIntegerView<\/code> \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c 2 xml-\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0434\u043b\u044f \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>viv_vector_integer<\/code> \u0447\u0438\u0441\u043b\u043e, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 view (0 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e).<\/li>\n<li><code>viv_digit_color<\/code> \u0446\u0432\u0435\u0442 \u0446\u0438\u0444\u0440 (\u0447\u0435\u0440\u043d\u044b\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e).<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0414\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b <code>VectorIntegerView<\/code> \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 (\u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0432 <a href=\"https:\/\/github.com\/qwert2603\/VectorIntegerView\/tree\/master\/app\">\u0434\u0435\u043c\u043e-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438<\/a>):<\/p>\n<p>  <\/p>\n<ul>\n<li><code>@integer\/viv_animation_duration<\/code> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 (400\u043c\u0441 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e).<\/li>\n<li><code>@dimen\/viv_digit_size<\/code> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0434\u043d\u043e\u0439 \u0446\u0438\u0444\u0440\u044b (<code>24dp<\/code> \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e).<\/li>\n<li><code>@dimen\/viv_digit_translateX<\/code> \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c \u0446\u0438\u0444\u0440, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0440\u043e\u0432\u043d\u044f\u0442\u044c \u0438\u0445 \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438.<\/li>\n<li><code>@dimen\/viv_digit_translateY<\/code> \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c \u0446\u0438\u0444\u0440, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0440\u043e\u0432\u043d\u044f\u0442\u044c \u0438\u0445 \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438.<\/li>\n<li><code>@dimen\/viv_digit_strokewidth<\/code> \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c \u0446\u0438\u0444\u0440.<\/li>\n<li><code>@dimen\/viv_digit_margin_horizontal<\/code> \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e \u0432\u0441\u0435\u043c view \u0446\u0438\u0444\u0440 (<code>DigitViewHolder<\/code>) (<code>-3dp<\/code> \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e). \u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u043c\u0435\u0436\u0434\u0443 \u0446\u0438\u0444\u0440\u0430\u043c\u0438 \u043c\u0435\u043d\u044c\u0448\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0446\u0438\u0444\u0440 \u2014 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0435.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u044b \u043a\u043e \u0432\u0441\u0435\u043c <code>VectorIntegerView<\/code> \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 <code>VectorIntegerView<\/code> \u0432 XML-\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"xml\">&lt;FrameLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"     xmlns:app=\"http:\/\/schemas.android.com\/apk\/res-auto\"     android:layout_width=\"match_parent\"     android:layout_height=\"match_parent\"&gt;      &lt;com.qwert2603.vector_integer_view.VectorIntegerView         android:id=\"@+id\/vectorIntegerView\"         android:layout_width=\"match_parent\"         android:layout_height=\"wrap_content\"         android:layout_margin=\"16dp\"         app:viv_digit_color=\"#ff8000\"         app:viv_vector_integer=\"14\" \/&gt;  &lt;\/FrameLayout&gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0432 \u043a\u043e\u0434\u0435, \u043f\u0435\u0440\u0435\u0434\u0430\u0432 <code>BigInteger<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">final VectorIntegerView vectorIntegerView = findViewById(R.id.vectorIntegerView); vectorIntegerView.setInteger(         vectorIntegerView.getInteger().add(BigInteger.ONE),         \/* animated = *\/ true );<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0430\u0434\u0438 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0447\u0438\u0441\u043b\u0430 \u0442\u0438\u043f\u0430 <code>long<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">vectorIntegerView.setInteger(1918L, false);<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <code>animated<\/code> \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043e <code>false<\/code>, \u0442\u043e \u0434\u043b\u044f \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d \u043c\u0435\u0442\u043e\u0434 <code>notifyDataSetChanged<\/code>, \u0438 \u043d\u043e\u0432\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043e \u0431\u0435\u0437 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 <code>VectorIntegerView<\/code> \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u0432 <code>onSaveInstanceState<\/code> \u0438 <code>onRestoreInstanceState<\/code>.<\/p>\n<p>  <\/p>\n<h2 id=\"ishodniki\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/h2>\n<p>  <\/p>\n<p>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 <a href=\"https:\/\/github.com\/qwert2603\/VectorIntegerView\">github<\/a> (\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f library). \u0422\u0430\u043c \u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f demo \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0435 <code>VectorIntegerView<\/code> (\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f app).<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f <a href=\"https:\/\/github.com\/qwert2603\/VectorIntegerView\/blob\/master\/app\/demo.apk\">\u0434\u0435\u043c\u043e-apk<\/a> (<code>minSdkVersion 21<\/code>).<\/p>\n<\/div>\n<p>        <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <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\/post\/420919\/\"> https:\/\/habr.com\/post\/420919\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div data-io-article-url=\"https:\/\/habr.com\/post\/420919\/\" class=\"post__text post__text-html js-mediator-article\">\n<p>\u041a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0438 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 UI \u2014 \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f Android \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043b\u044f \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u0438\u0437\u0430\u0439\u043d\u0430. \u0427\u0430\u0441\u0442\u043e \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u043b\u0435 \u0441 \u0447\u0438\u0441\u043b\u043e\u043c \u0438\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u043b\u0438 \u0441\u0443\u043c\u043c\u0443 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432 \u0437\u0430 \u043c\u0435\u0441\u044f\u0446. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0442\u0430\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043b\u0435\u0433\u043a\u043e \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e <code>TextView<\/code>, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0435\u0435 \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e \u0438 \u0435\u0449\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ma\/qy\/zn\/maqyznzolbevahrngecio-p3g0a.gif\" alt=\"demo\"><\/p>\n<p>  <\/p>\n<p>\u041d\u0430 YouTube \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e <strong><a href=\"https:\/\/www.youtube.com\/watch?v=tTQlPH3ROMw\">Demo-\u0432\u0438\u0434\u0435\u043e<\/a><\/strong>.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u0439\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0432\u0441\u0435 \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\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-288604","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/288604","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=288604"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/288604\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=288604"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=288604"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=288604"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}