Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 片段事务如何处理动画?_Android_Animation_Android Fragments - Fatal编程技术网

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)