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();

在我开始执行片段事务之前,尝试将挂起的转换也放在单击按钮上,但也没有用。

如果有人可以提出解决此问题的方法,那将非常有帮助。

4

1 回答 1

1

您没有覆盖任何动画,如果您做得对,在片段中滑动不应移动活动的布局。相反,您必须将可以在 xml 中定义的动画应用于包含您的活动的布局。本质上,您将呈现您的活动滑出,片段滑入的外观。根据您正在构建的目标,在应用动画后,您可能需要实际移动(在这种情况下,应用动画实际上不会改变物理位置布局,它只会在你告诉它的地方呈现。)包含片段的布局。您不需要物理移动包含活动的布局,因为如果您为片段中的底层布局指定一个空的 onclick 侦听器,则不会发生点击。当你完成后,使用另一个 xml 动画文件将片段和 Activity 布局滑回原来的样子(因此是相反的动画),然后将片段物理地移回原处,否则它仍然会接收所有点击事件。(如果您的目标是新的 sdk,我相信这个问题已经得到解决)

动画 xml 看起来像这样

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="300"/>
</set>
于 2012-12-04T08:51:11.843 回答