尝试做一个简单的共享元素动画,当只有一个元素被共享时,它工作得很好。我试着通过分享两个元素来进行实验,这就是问题所在:
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)
尽管back
和animate
都是按钮(我甚至尝试将它们类型转换为视图)。
同样,仅使用一个视图动画即可正常工作,如下所示:
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"));
”””我正在做的。如果我做的一切都是正确的,为什么我会得到这个错误?**
2条答案
按热度按时间r1zk6ea11#
在你的类的顶部替换:
import android.support.v4.util.Pair
由
import android.util.Pair
应该能成功你只是用错了一双。
1l5u6lss2#
这很简单你只需要一个模型。比如下面的例子:
希望这能对你有所帮助。:)