Android:使用搜索栏为动画矢量绘制动画
Posted
技术标签:
【中文标题】Android:使用搜索栏为动画矢量绘制动画【英文标题】:Android : Animate an animated vector drawable with a seek bar 【发布时间】:2016-04-13 11:28:27 【问题描述】:两年以来我一直是 android 开发人员,但我从未使用过动画。 我有一个问题要为我的公司解决:我需要画一个悲伤的笑脸,让他更快乐,同时提高搜索栏的价值,如下图所示。
Smile following the progress of a seek bar
为了绘制微笑动画,我遵循了关于 AnimatedVectorDrawable 的 android 文档
但现在动画遵循 3000 毫秒的持续时间,我想用搜索栏控制动画(如视频)。
真的试图在三天内通过互联网找到一些东西,但我想我没有找到我想要的关键词。
我的动画矢量:
<animated-vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/face" >
<target
android:name="mouth"
android:animation="@animator/smile" />
</animated-vector>
我的矢量
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:
android:
android:viewportHeight="100"
android:viewportWidth="100" >
<path
android:fillColor="@color/yellow"
android:pathData="@string/path_circle"/>
<path
android:fillColor="@android:color/black"
android:pathData="@string/path_face_left_eye"/>
<path
android:fillColor="@android:color/black"
android:pathData="@string/path_face_right_eye"/>
<path
android:name="mouth"
android:strokeColor="@android:color/black"
android:strokeWidth="@integer/stroke_width"
android:strokeLineCap="round"
android:pathData="@string/path_face_mouth_sad"/>
</vector>
我的对象动画师
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="3000"
android:propertyName="pathData"
android:valueFrom="@string/path_face_mouth_sad"
android:valueTo="@string/path_face_mouth_happy"
android:valueType="pathType"
android:interpolator="@android:anim/accelerate_interpolator"/>
我的动画功能
private void animate()
Drawable drawable = imageView.getDrawable();
if (drawable instanceof Animatable)
((AnimatedVectorDrawable) drawable).start();
感谢您的帮助。如果您需要有关我的尝试的更多信息,请随时询问。
【问题讨论】:
【参考方案1】:你应该看看RoadRunner,它适用于 SVG,也允许你手动设置进度。
【讨论】:
谢谢,我看过但不详细,所以我会再检查一次。让你知道【参考方案2】:使用 ValueAnimator:
ValueAnimator mProgressAnimator = ValueAnimator.ofInt(progress,
getMax()).setDuration(timeToEnd);
mProgressAnimator.setInterpolator(new LinearInterpolator());
mProgressAnimator.addUpdateListener(this);
mProgressAnimator.start();
@Override
public void onAnimationUpdate(final ValueAnimator valueAnimator)
final int animatedIntValue = (int)
valueAnimator.getAnimatedValue();
setProgress(animatedIntValue);
【讨论】:
以上是关于Android:使用搜索栏为动画矢量绘制动画的主要内容,如果未能解决你的问题,请参考以下文章
Android动画机制与使用技巧——Android 5.X SVG 矢量动画机制
Android Animated Vector Drawable 无法在 xml 中循环
Android 制作逐渐显示动画(描边动画、矢量动画VectorDrawble)