android 动画无法解析?

qlckcl4x  于 2023-06-20  发布在  Android
关注(0)|答案(2)|浏览(99)

尝试做一个简单的共享元素动画,当只有一个元素被共享时,它工作得很好。我试着通过分享两个元素来进行实验,这就是问题所在:

ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(Main2Activity.this, Pair.create((View) back, "agreedName1"), Pair.create((View) animate, "agreedName2"));

Pair<View, String> h = Pair.create((View) back, "agreedName1");
            Pair<View, String> k = Pair.create((View) animate, "agreedName1");
            ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(Main2Activity.this, h, k);

两者都不起作用,因为显然:
错误:(35,54)错误:未找到适用于makeSceneTransitionAnimation(Main 2Activity,android.support.v4.util.Pair,android.support.v4.util.Pair)方法ActivityOptions的方法。makeSceneTransitionAnimation(Activity,View,String)不适用(参数不匹配; android.support.v4.util.Pair无法转换为View)方法ActivityOptions.makeSceneTransitionAnimation(Activity,android. util. Pair...)不适用(varargs不匹配; android.support.v4.util.Pair无法转换为android.util.Pair)
尽管backanimate都是按钮(我甚至尝试将它们类型转换为视图)。
同样,仅使用一个视图动画即可正常工作,如下所示:

ActivityOptionsCompat options1 = ActivityOptionsCompat.
                    makeSceneTransitionAnimation(this, animate, "transition1"); //CANT HAVE TWO TRANSITIONS WITHOUT PAIR HOWEVER
            startActivity(intent, options.toBundle());

如何成功执行两个元素的共享动画?

我做这件事的方式(在我的前两个例子中)是在开发人员文档中关于共享元素转换的方式。

文档明确说明:

要在具有多个共享元素的两个Activity之间制作场景过渡动画,请使用android:transitionName属性在两个布局中定义共享元素(或在两个Activity中使用View.setTransitionName()方法),并按如下所示创建ActivityOptions对象:

> ActivityOptions options =
> ActivityOptions.makeSceneTransitionAnimation(this,
>         Pair.create(view1, "agreedName1"),
>         Pair.create(view2, "agreedName2"));

”””我正在做的。如果我做的一切都是正确的,为什么我会得到这个错误?**

r1zk6ea1

r1zk6ea11#

在你的类的顶部替换:
import android.support.v4.util.Pair

import android.util.Pair
应该能成功你只是用错了一双。

1l5u6lss

1l5u6lss2#

这很简单你只需要一个模型。比如下面的例子:

ActivityOptions opt = ActivityOptions.makeSceneTransitionAnimation(
                            this,
                            (Pair<View, String>) Pair.create(view1, "agreedName1"),
                            (Pair<View, String>) Pair.create(view2, "agreedName2"));

希望这能对你有所帮助。:)

相关问题