首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AnimatedVectorDrawable动画没有启动

AnimatedVectorDrawable动画没有启动
EN

Stack Overflow用户
提问于 2016-07-09 18:49:44
回答 1查看 1.7K关注 0票数 1

我试图创建一个简单的播放暂停和反转动画点击使用AnimatedVectorDrawable。不知怎么动画还没开始。

我的代码如下:

MainActivity.java

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";

private ImageView playPauseImgVw;
private AnimatedVectorDrawable playToPauseAvDrwble;
private AnimatedVectorDrawable pauseToPlayAvDrwble;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    playPauseImgVw = (ImageView) findViewById(R.id.activity_main_play_pause_btn_imgVw_id);
    playToPauseAvDrwble = (AnimatedVectorDrawable) getDrawable(R.drawable.animated_vector_play_to_pause);
    pauseToPlayAvDrwble = (AnimatedVectorDrawable) getDrawable(R.drawable.animated_vector_pause_to_play);

    playPauseImgVw.setImageDrawable(playToPauseAvDrwble);
    playPauseImgVw.setOnClickListener(newOnClickListener());
}

private View.OnClickListener newOnClickListener() {
    return new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            morph();
        }
    };
}

public void morph() {

    Log.d(TAG, "start animation");
    playToPauseAvDrwble.start();
}
}

transition_pause_to_play.xml

代码语言:javascript
复制
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator android:duration="1000"
    android:propertyName="pathData"
    android:valueFrom="@string/path_pause_button"
    android:valueTo="@string/path_play_button"
    android:valueType="pathType"
    android:interpolator="@android:interpolator/fast_out_slow_in" />

</set>

transition_play_to_pause.xml

代码语言:javascript
复制
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator android:duration="1000"
    android:propertyName="pathData"
    android:valueFrom="@string/path_play_button"
    android:valueTo="@string/path_pause_button"
    android:valueType="pathType"
    android:interpolator="@android:interpolator/fast_out_slow_in" />

</set>

animated_vector_pause_to_play.xml

代码语言:javascript
复制
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/vector_pause_button">
<target
    android:animation="@animator/transition_pause_to_play"
    android:name="path_pause_button" />
</animated-vector>

animated_vector_play_to_pause.xml

代码语言:javascript
复制
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/vector_play_button">
<target
    android:animation="@animator/transition_play_to_pause"
    android:name="path_play_button" />

vector_pause_button.xml

代码语言:javascript
复制
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="128dp"
android:height="128dp"
android:viewportHeight="600"
android:viewportWidth="600">

<path
    android:name="path_name_pause_button"
    android:fillAlpha="1"
    android:fillColor="@color/color_pause_button"
    android:pathData="@string/path_pause_button"
    android:strokeColor="@color/color_stroke_pause_button" />

vector_play_button.xml

代码语言:javascript
复制
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="128dp"
android:height="128dp"
android:viewportHeight="600"
android:viewportWidth="600">

<path
    android:name="path_name_play_button"
    android:fillAlpha="1"
    android:fillColor="@color/color_play_button"
    android:pathData="@string/path_play_button"
    android:strokeColor="@color/color_stroke_play_button" />

activity_main.xml

代码语言:javascript
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.merryapps.vectoranimationpoc.MainActivity">

<ImageView
    android:id="@+id/activity_main_play_pause_btn_imgVw_id"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="true"
    android:scaleType="fitCenter"
    android:layout_centerHorizontal="true"/>

strings.xml

代码语言:javascript
复制
<resources>
<string name="app_name">VectorAnimationPoc</string>
<string name="path_play_button">M300,70 l 0,-70 95,70 0,0  M300,70 l 95,0 -95,70 0,0 z</string>
<string name="path_pause_button">M365,140 l 30,0 0,-140, -30,0  M300,140 l 30,0 0,-140 -30,0 z</string>
</resources>

我是不是漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-11 13:13:16

从您已经发布的代码来看,这似乎基本上是正确的,除了几个重要的排字!

您的AnimatedVectorDrawable <target>标记正在查找名为"path_play_button“和"path_pause_button”的目标,但在VectorDrawables中,这些路径实际上被命名为"path_name_play_button“和"path_name_pause按钮”。

您没有发布实际的pathData,但是假设路径是兼容的,我认为确保这些名称正确匹配应该修复它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38285185

复制
相关文章

相似问题

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