首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >矢量可绘制中的Shimmer动画

矢量可绘制中的Shimmer动画
EN

Stack Overflow用户
提问于 2020-05-25 01:38:33
回答 1查看 496关注 0票数 3

我一直在尝试使用动画矢量drawable来实现一个图标的微光动画。我正在寻找的效果类似于这个-

我使用FaceBook shimmer library来获得这个效果,即使这正是我所需要的,我还是想使用矢量动画来获得这个效果,因为只为这个动画包含一个库是没有意义的。有没有人能给我一些建议或起点,告诉我如何做到这一点。

我对Shape Shifter相当满意,但是我还不能实现这个动画

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-25 17:24:39

我终于找到了解决这个问题的办法!诀窍是在顶部有一个剪切的路径,而实际的路径在底部可绘制。我已经将XML引用包含在下面的可绘制动画中。动画看起来有点粗制滥造,但这是可以改进的。多亏了Shape,我做到了这一点。

代码语言:javascript
复制
<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="24dp"
            android:height="24dp"
            android:viewportWidth="24"
            android:viewportHeight="24">
            <clip-path
                android:name="heart"
                android:pathData="M 7 3 C 5.465 3 3.922 3.5 2.75 4.7 C 0.407 7.1 0.471 10.8 2.75 13.2 L 12 23 L 21.25 13.2 C 23.529 10.8 23.593 7.1 21.25 4.7 C 18.907 2.4 15.093 2.4 12.75 4.7 L 12 5.5 L 11.25 4.7 C 10.078 3.5 8.536 3 7 3 Z"/>
            <path
                android:name="path"
                android:pathData="M 7 3 C 5.465 3 3.922 3.5 2.75 4.7 C 0.407 7.1 0.471 10.8 2.75 13.2 L 12 23 L 21.25 13.2 C 23.529 10.8 23.593 7.1 21.25 4.7 C 18.907 2.4 15.093 2.4 12.75 4.7 L 12 5.5 L 11.25 4.7 C 10.078 3.5 8.536 3 7 3 Z"
                android:fillColor="#ff0000"/>
            <group android:name="group">
                <path
                    android:name="shimmer"
                    android:pathData="M 4 0 L 24 19 L 22 22 L 0 3 Z">
                    <aapt:attr name="android:fillColor">
                        <gradient
                            android:endColor="#FFC500"
                            android:endX="24"
                            android:endY="24"
                            android:startColor="#ED613A"
                            android:startX="0"
                            android:startY="0"
                            android:type="linear" />
                    </aapt:attr>
                </path>
            </group>
        </vector>
    </aapt:attr>
    <target android:name="group">
        <aapt:attr name="android:animation">
            <set>
                <objectAnimator
                    android:propertyName="translateX"
                    android:duration="700"
                    android:valueFrom="10"
                    android:valueTo="-10"
                    android:valueType="floatType"
                    android:interpolator="@android:anim/linear_interpolator"/>
                <objectAnimator
                    android:propertyName="translateY"
                    android:duration="700"
                    android:valueFrom="-10"
                    android:valueTo="10"
                    android:valueType="floatType"
                    android:interpolator="@android:anim/linear_interpolator"/>
            </set>
        </aapt:attr>
    </target>
</animated-vector>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61989853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档