overridePendingTransition需要2个动画并为整个屏幕设置动画。
我如何在2个活动之间转换动画2个单独的视图?
基本上我想打开一扇双门,当我按下按钮,看到它背后的下一个活动。
我可以轻松地将屏幕滑动到下一个屏幕:
overridePendingTransition(R.anim.transition_left_in, R.anim.transition_left_out);
我可以打开双门,但没有像这样的过渡:
public void loginOnClick(View view)
{
final RelativeLayout leftPanel = (RelativeLayout)findViewById(R.id.RelativeLayoutLeft);
final RelativeLayout rightPanel = (RelativeLayout)findViewById(R.id.RelativeLayoutRight);
Animation animLeft = new TranslateAnimation(1, 0, 1, -1, 1, 0, 1, 0);
animLeft.setDuration(1000);
animLeft.setFillAfter(true);
animLeft.setAnimationListener(new Animation.AnimationListener()
{
@Override public void onAnimationStart(Animation animation)
{
}
@Override public void onAnimationEnd(Animation animation)
{
leftPanel.setVisibility(View.GONE);
rightPanel.setVisibility(View.GONE);
}
@Override public void onAnimationRepeat(Animation animation)
{
}
});
Animation animRight = new TranslateAnimation(1, 0, 1, 1, 1, 0, 1, 0);
animRight.setDuration(1000);
animRight.setFillAfter(true);
leftPanel.startAnimation(animLeft);
rightPanel.startAnimation(animRight);
}
我知道我可以在动画后更改活动,但我希望在动画上一个活动时看到下一个活动。
我该怎么办?
任何帮助将不胜感激。
修改
我找到的最佳解决方法是在第一个活动xml中使用include
来包含第二个活动的上下文。 (在将打开的大门后面)但它不完全是我想要的,因为UI上的某些东西在第二种方法的onCreate()
之后发生了变化。
答案 0 :(得分:2)
我可以建议一个解决方法:
通过添加以下内容禁用主题的默认窗口动画:
<item name="android:windowAnimationStyle">@null</item>
现在,就在Activity_2必须开始之前,Activity_1已经double doors
了。而不是在Activity_1中执行动画,而是在Activity_2的onCreate(Bundle)
中启动它。
您需要将double doors
放在Activity_2的布局上。在活动_2 loginOnClick(View view)
中调用setContentView(R.layout.activity_2)
后,将onCreate(Bundle)
的内容放置。
由于windowAnimationStyle
设置为null
,因此从Activity_1到Activity_2的转换似乎是无缝的。
编辑刚刚对此进行了测试,效果很好。
答案 1 :(得分:0)
您可以为其他活动添加动画,使其从屏幕中间向外水平朝向设备侧面增长,速度与门打开时相同。这会使看到门打开应用程序的错觉。