我无法使用或了解弹出方式 后台堆栈的FragmentTransactions处理自定义 动画。具体来说,我希望它可以调用“out”动画,但是 它似乎没有。
我有一个处理片段事务的简单方法 (FragmentTransaction)我添加片段并应用自定义 过渡使其淡入/淡出。我也加入了这个 后台堆栈,以便用户可以撤消该事务 后退按钮,基本上导航到片段之前的状态 加入。
protected void changeFragment() {
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
ft.add(R.id.fragment_container, new TestFragment());
ft.addToBackStack(null);
ft.commit();
}
一切都在向前发展,但是当用户点击时 后退按钮,过渡动画不会反转。我的期望 当碎片被移除时,它将使用淡出 动画。相反,它似乎弹出(没有动画)然后 容器似乎淡入。我不确定这究竟是什么 正在发生,但片段绝对不会消失。
我的应用程序使用兼容性库来添加片段支持, 但我认为这也适用于Honeycomb(android-11)。 有谁知道我在这里做错了什么,或者我是不是 只是期待太多?理想情况下,我想动画 片段与Gmail(在Xoom上)的方式类似 通过单击消息继续前进,然后使用后退返回 按钮。优选地,不必覆盖后退按钮 功能,并跟上我自己的片段状态,因为我可以 有几个“交易”,我想退出,我 不是重新发明车轮的粉丝。
Android开发者小组也问过:http://groups.google.com/group/android-developers/browse_thread/thread/1136a3a70fa0b6e9
答案 0 :(得分:49)
我用这个:
ft.setCustomAnimations(R.anim.slide_in, R.anim.hyperspace_out, R.anim.hyperspace_in, R.anim.slide_out);
,按下后退按钮时,转换工作相反。
答案 1 :(得分:29)
该错误已在3.2版本中修复,并添加了以下新API:
需要注意的是,它还没有被反向移植到兼容性库(如错误报告中所述)。
答案 2 :(得分:5)
这是一个错误,请看bug report 15623。其中一个Android项目成员评论说,修复程序对于3.1版本来说已经太晚了,但它应该会进入下一个版本。
同一位成员继续说......
问题是一样的 动画在弹出操作上运行 正如将碎片放入其中一样 他们目前的地方。例如,在 上面的滑动示例,在a 前进操作(推动旧的 片段到堆栈上并移动 新片段进入视图),我们滑动了 老碎片从中心到 左边并滑动新片段 从右到中心。当。。。的时候 弹出堆栈,这些相同的动画 运行:最近的片段是 通过从中滑动来“动画” 中心的权利(之后 它消失了,因为它正在存在 去除)。弹出旧片段 从堆栈中取出并从中激活 左边的中心......右边的 屏幕。