sho*_*ano 9 java xml animation android
根据Android开发人员站点,我们可以AnimatorSet从位于路径上的xml文件以编程方式加载类,如下所示:res/animator/filename.xml.所以我创建了一个示例项目并尝试查看它是否真的有效,但事实并非如此; 什么都没发生.如果我能理解缺少的东西和/或我做错了什么,那将是非常好的.提前致谢!下面是我的animator xml文件和加载xml的Java代码:
RES /动画/ sample.xml中:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially"
>
<set>
<objectAnimator
android:propertyName="x"
android:duration="500"
android:valueTo="400"
android:valueType="intType"
/>
<objectAnimator
android:propertyName="y"
android:duration="500"
android:valueTo="300"
android:valueType="intType"
/>
</set>
<objectAnimator
android:propertyName="alpha"
android:duration="500"
android:valueTo="1f"
/>
</set>
Run Code Online (Sandbox Code Playgroud)
这是我的Java代码加载上面的xml文件:
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View view) {
// Load and start Animaton
AnimatorSet animSet =
(AnimatorSet) AnimatorInflater.loadAnimator(view.getContext(), R.animator.sample);
animSet.setTarget(view);
animSet.start();
}
});
Run Code Online (Sandbox Code Playgroud)
Ray*_*non 29
您设置包含另一个Set res/animator/sample.xml.简化它
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially"
>
<objectAnimator
android:propertyName="alpha"
android:duration="500"
android:valueTo="1f"
/>
</set>
Run Code Online (Sandbox Code Playgroud)
你像这样给AnimatorSet充气
AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(getActivity(), R.animator.sample);
set.setTarget(fab); // set the view you want to animate
set.start();
Run Code Online (Sandbox Code Playgroud)
到目前为止,我还没有找到一种方法将objectAnimator从xml扩展到Java.我必须将它包装在一个Set中
这是文档中给出的示例中的错误。
尝试将 更改android:valueType="intType"为android:valueType="floatType".
它适用于@RaymondChenon,因为他没有明确更改
android:valueType为int,因此系统采用默认值float
这里的问题是你在动画师android:valueType="intType"中给出的内容应该是针对你正在制作动画的属性的。android:valueType="floatType"android:propertyName="x"
在运行时系统寻找您想要动画的属性的设置器。就像您的情况一样,它会查找setX(),但当您定义 type 的参数类型时,int它会导致不匹配,因为没有这样的方法,我不知道为什么它不会导致崩溃。
查看View类的属性有一个方法setX(float)
为了进一步理解,可以参考StackOverflow Question
| 归档时间: |
|
| 查看次数: |
15098 次 |
| 最近记录: |