Android анимированный вектор Drawable

Я создал анимацию, похожую на стрелку, пропущенную через сердце, используя Animated Vector Drwable, код, который на самом деле работает, как и ожидалось, на устройстве Nexus, но на других устройствах он работает неправильно. Я создал анимацию, используя переключатель формы.

AVD это

    <animated-vector
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:aapt="http://schemas.android.com/aapt">
        <aapt:attr name="android:drawable">
            <vector
                android:name="vector"
                android:width="512dp"
                android:height="512dp"
                android:viewportWidth="512"
                android:viewportHeight="512">
                <group android:name="group">
                    <path
                        android:name="bottom_arrow"
                        android:pathData="M 100.073 336.696 C 96.117 329.932 88.018 328.046 81.988 332.481 L 43.773 360.564 L 15.883 353.66 C 8.841 351.919 1.866 356.903 0.31 364.798 C -1.245 372.694 3.204 380.508 10.248 382.252 L 29.847 387.105 L 24.176 408.683 C 22.138 416.439 26.095 424.579 33.015 426.864 C 34.247 427.27 35.489 427.464 36.711 427.464 C 42.354 427.464 47.559 423.332 49.235 416.956 L 57.505 385.486 L 96.311 356.968 C 102.344 352.533 104.028 343.458 100.073 336.696 Z"
                        android:fillColor="#b56d3c"
                        android:fillAlpha="0"
                        android:strokeMiterLimit="2"/>
                </group>
                <path
                    android:name="heart"
                    android:pathData="M 201.143 277.714 C 201.143 276.925 201.303 276.173 201.592 275.49 C 201.881 274.806 202.299 274.19 202.816 273.673 C 203.333 273.156 203.949 272.738 204.633 272.449 C 205.316 272.16 206.068 272 206.857 272 C 207.646 272 208.398 272.16 209.081 272.449 C 209.765 272.738 210.381 273.156 210.898 273.673 C 211.415 274.19 211.833 274.806 212.122 275.49 C 212.411 276.173 212.571 276.925 212.571 277.714 C 212.571 280.87 210.013 283.429 206.857 283.429 C 205.805 283.429 204.819 283.145 203.973 282.649 C 203.126 282.153 202.419 281.445 201.923 280.598 C 201.427 279.752 201.143 278.766 201.143 277.714 C 201.143 277.714 201.143 277.714 201.143 277.714"
                    android:fillColor="#ff3632"/>
                <group
                    android:name="arrow_group"
                    android:translateX="-450"
                    android:translateY="300">
                    <path
                        android:name="top_arrow"
                        android:pathData="M 509.547 76.699 C 506.912 72.655 502.506 70.113 497.686 69.855 L 429.152 66.185 C 416.119 65.494 403.942 72.083 397.412 83.4 C 390.881 94.719 391.257 108.549 398.392 119.498 L 403.71 127.657 L 276.096 212.232 C 269.133 216.845 267.23 226.23 271.844 233.191 C 274.755 237.583 279.562 239.962 284.464 239.962 C 287.333 239.962 290.235 239.146 292.804 237.443 L 420.226 152.996 L 425.519 161.117 C 431.959 170.998 442.772 176.789 454.372 176.789 C 455.622 176.789 456.883 176.721 458.149 176.584 C 471.141 175.178 482.086 166.713 486.712 154.493 L 511.02 90.311 C 512.729 85.799 512.182 80.742 509.547 76.699 Z"
                        android:fillColor="#b56d3c"
                        android:fillAlpha="0"
                        android:strokeAlpha="0" />
                </group>
            </vector>
        </aapt:attr>
        <target android:name="heart">
            <aapt:attr name="android:animation">
                <objectAnimator
                    android:propertyName="pathData"
                    android:duration="500"
                    android:valueFrom="M 201.143 277.714 C 201.143 276.925 201.303 276.173 201.592 275.49 C 201.881 274.806 202.299 274.19 202.816 273.673 C 203.333 273.156 203.949 272.738 204.633 272.449 C 205.316 272.16 206.068 272 206.857 272 C 207.646 272 208.398 272.16 209.081 272.449 C 209.765 272.738 210.381 273.156 210.898 273.673 C 211.415 274.19 211.833 274.806 212.122 275.49 C 212.411 276.173 212.571 276.925 212.571 277.714 C 212.571 280.87 210.013 283.429 206.857 283.429 C 205.805 283.429 204.819 283.145 203.973 282.649 C 203.126 282.153 202.419 281.445 201.923 280.598 C 201.427 279.752 201.143 278.766 201.143 277.714 C 201.143 277.714 201.143 277.714 201.143 277.714"
                    android:valueTo="M 136.274 396.851 C 104.532 368.572 60.092 321.523 28.648 257.97 C 20.099 240.781 15.572 221.315 15.572 201.703 C 15.572 135.445 66.07 81.539 128.142 81.539 C 157.428 81.539 185.546 93.9 206.375 115.32 C 227.203 93.901 255.321 81.539 284.608 81.539 C 346.678 81.539 397.177 135.444 397.177 201.703 C 397.177 221.314 392.651 240.782 384.088 257.999 C 352.659 321.523 308.219 368.573 276.477 396.851 C 242.014 427.551 215.051 443.197 213.921 443.847 C 211.584 445.191 208.978 445.863 206.374 445.863 C 206.374 445.863 206.374 445.863 206.374 445.863 C 203.77 445.863 201.165 445.191 198.83 443.847 C 197.7 443.196 170.737 427.552 136.274 396.851"
                    android:valueType="pathType"
                    android:interpolator="@android:anim/bounce_interpolator"/>
            </aapt:attr>
        </target>
        <target android:name="arrow_group">
            <aapt:attr name="android:animation">
                <set>
                    <objectAnimator
                        android:propertyName="translateX"
                        android:startOffset="750"
                        android:duration="150"
                        android:valueFrom="-450"
                        android:valueTo="0"
                        android:valueType="floatType"
                        android:interpolator="@android:interpolator/fast_out_slow_in"/>
                    <objectAnimator
                        android:propertyName="translateY"
                        android:startOffset="750"
                        android:duration="150"
                        android:valueFrom="300"
                        android:valueTo="0"
                        android:valueType="floatType"
                        android:interpolator="@android:interpolator/fast_out_slow_in"/>
                </set>
            </aapt:attr>
        </target>
        <target android:name="top_arrow">
            <aapt:attr name="android:animation">
                <objectAnimator
                    android:propertyName="fillAlpha"
                    android:startOffset="730"
                    android:duration="20"
                    android:valueFrom="0"
                    android:valueTo="1"
                    android:valueType="floatType"
                    android:interpolator="@android:interpolator/fast_out_slow_in"/>
            </aapt:attr>
        </target>
        <target android:name="bottom_arrow">
            <aapt:attr name="android:animation">
                <objectAnimator
                    android:propertyName="fillAlpha"
                    android:startOffset="900"
                    android:duration="100"
                    android:valueFrom="0"
                    android:valueTo="1"
                    android:valueType="floatType"                 
                    android:interpolator=
                          "@android:interpolator/fast_out_slow_in"/>
            </aapt:attr>
        </target>
    </animated-vector>

На самом деле перевод x и y должен работать в одно и то же время, но в некоторых устройствах перевод x, я объявил первый, работает первым, а перевод y работал вторым, поэтому стрелка не проходит через сердце, где ошибка в том, что я не знаю..? Стрела не пронзает сердце

0 ответов

Другие вопросы по тегам