我在使用 Fragment Transaction 时遇到了一个非常烦人的情况。
在我的 Activity 中有一个 fragment 必须出现一个向上滑动的动画:
public void showConnectedToWifiCard(String ssid) {
Bundle bundle = new Bundle();
bundle.putString("SSID", ssid);
ConnectedToWifiCardFragmentImpl fm = new ConnectedToWifiCardFragmentImpl();
fm.setArguments(bundle);
// Begin the transaction
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
// Replace the contents of the container with the new fragment
//ft.setCustomAnimations(R.anim.slide_up_anim, R.anim.slide_down_anim);
//ft.hide(fm);
if (ft == null){
ft.add(R.id.main_small_card, fm);
}else{
ft.replace(R.id.main_small_card, fm);
}
ft.commit();
}
我原以为 Fragment Transaction 会在动画之后立即创建 fragment (或替换),但结果是:
- fragment 出现在 Activity 中
- fragment 消失
- fragment 启动动画。
我尝试将 fragment 设置为不可见/可见,但结果没有改变。
如何解决这个“眨眼”?
最佳答案
替换Fragment时制作动画,可以使用这段代码:
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
//set customize animation here
fragmentTransaction.setCustomAnimations(R.anim.slide_left_in, R.anim.slide_left_out,
R.anim.slide_right_in, R.anim.slide_right_out);
ExampleFragment fragment = ExampleFragment.getInstance();
fragmentTransaction.replace(R.id.fragment, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
详情请看我的博文: http://www.devexchanges.info/2015/05/replacing-fragment-and-adding-layouts.html 希望这有帮助! :D
关于android - Fragment Transaction 如何与动画一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31756996/