使用Fragment Manager显示片段时,如何同时进行活动动画?

3
我有一个场景,其中在活动中,当点击一个按钮时,我需要显示从右侧滑入的片段,类似地,当我按下后退键时,片段向右滑回并显示添加片段的前一个活动。
现在我的问题是片段本身的动画可以工作,但是我需要通过向左滑动来动画化活动,而片段从右侧滑入。
尝试使用overridePendingTransition方法来解决此问题:
overridePendingTransition(R.anim.push_in_from_left, R.anim.push_out_to_left);

我尝试将挂起的转换放在可用于活动 onResume,onPause 等方法中,但无法使其正常工作。以下是我正在使用的代码:

overridePendingTransition(R.anim.push_in_from_left, R.anim.push_out_to_left); 
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setCustomAnimations(R.anim.pull_in_from_left, R.anim.push_out_to_left, R.anim.pull_in_from_left, R.anim.push_out_to_left);
transaction.add(R.id.events_holder, myFragment);
transaction.addToBackStack("myFragment");
transaction.commit();

在我开始执行片段事务之前,试图将挂起的转换也放在按钮点击上,但仍然不起作用。

如果有人能提供解决此问题的建议,那将非常有帮助。

1个回答

1
你没有覆盖任何动画,如果你做得对的话,在一个片段中滑动不应该移动活动的布局。相反,你必须应用一个动画,你可以在包含你的活动的布局中定义它。实质上,你会给出你的活动滑出的外观,和片段滑入的外观。根据你构建的目标,应用动画后,你可能需要实际移动(在这种情况下,应用动画并不会改变布局的物理位置,它只会呈现在你告诉它的地方)包含片段的布局。你不需要物理移动包含活动的布局,因为如果你为片段中的底层布局指定一个空的onclick监听器,那么所有的点击都不会穿透。完成后,使用另一个xml动画文件将片段和活动布局滑回原来的位置(即相反的动画),然后将片段物理移开,否则它仍然会接收所有的点击事件。(我相信如果你针对新的sdk,这个问题已经被解决了)
一个动画xml看起来像这样
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="300"/>
</set>

1
谢谢,我明白了。会试试你的建议。 - Sumit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接