使用片段管理器显示片段时的动画活动

时间:2012-12-04 08:33:32

标签: android android-fragments android-activity android-animation

我有一个场景,从一个活动,点击一个按钮,我需要显示一个从右到左滑动的片段,同样当我向后推回片段幻灯片并显示我之前的活动从中添加了片段。

现在我的问题是片段本身的动画是有效的,但是当片段从右边滑入时,我需要通过向左滑动来动画活动。

尝试使用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 个答案:

答案 0 :(得分:1)

您没有覆盖任何动画,如果您正确执行操作,则片段中的滑动不应移动活动的布局。相反,您必须将可以在xml中定义的动画应用于包含您的活动的布局。从本质上讲,您将给出活动滑出的外观,并将幻灯片分段。根据您要构建的目标,在应用动画后,您可能需要实际移动(在这种情况下,应用动画实际上并不会改变物理位置对于布局,它将简单地呈现您告诉它的位置。)包含片段的布局。您不需要物理移动包含活动的布局,因为如果您为片段中的底层布局指定一个空的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>