Android 片段事务如何处理动画?
我有一个非常恼人的情况与碎片交易 在我的活动中,有一个片段必须与幻灯片动画一起出现:Android 片段事务如何处理动画?,android,animation,android-fragments,Android,Animation,Android Fragments,我有一个非常恼人的情况与碎片交易 在我的活动中,有一个片段必须与幻灯片动画一起出现: public void showConnectedToWifiCard(String ssid) { Bundle bundle = new Bundle(); bundle.putString("SSID", ssid); ConnectedToWifiCardFragmentImpl fm = new ConnectedToWifiCardFragmentImpl();
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();
}
我假设片段事务将在动画之后立即创建片段(或替换),但是,结果是:
- 片段出现在活动中
- 碎片消失
- 片段启动动画
我如何解决这个“眨眼” 我宁愿将view元素附加到片段并使用invalidate(),而不是每次创建片段时都替换片段。或者您可以使用android DOC中引入的动画库。在替换片段时制作动画,您可以使用以下代码:
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();
有关更多详细信息,请参阅我的博客帖子:
希望这有帮助!:D我重新编码了动画: Slide\u up.xml
<translate
android:fromXDelta="0"
android:fromYDelta="1000"
android:duration="1000"/>
slide_down.xml
<translate
android:fromXDelta="0"
android:fromYDelta="-1000"
android:duration="1500"/>
看看这个问题,他显然能做到毫无问题(回答中有java代码):试着像他一样,使用相同的xml文件(我现在从左到右,不拉动画,但要测试),并随时通知我它是否有效。正如你在我的代码中看到的,我做的和你做的完全一样(除了将片段添加到backstack中,因为没有必要)。此代码仍然存在问题。嗯……我认为您必须使用setCustomAnimation(arg1,arg2,arg3,arg4)
而不是setCustomAnimation(arg1,arg2)
!