【问题标题】:Android popBackStack setTransitionAndroid popBackStack setTransition
【发布时间】:2016-02-17 14:00:26
【问题描述】:

我正在尝试找出在调用popBacksStack 时播放过渡动画的正确方法。

现在我正在像这样设置从ListFragmentSettingsFragment 的转换

getSupportFragmentManager()
    .beginTransaction()
    .addToBackStack(null)
    .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
    .replace(R.id.fragment_holder, settingsFragment)
    .commit();

但是当弹出backstack 时我应该如何播放过渡(向后移动以使ListFragment 再次可见)?

正如我所注意到的,弹出 backstack 不是像替换片段那样的 fragmentManager 事务,所以在弹出之前我不能调用 setTransition

我想让代码尽可能简单。没有自定义动画等。

解决方案: 我怀疑我已经习惯了比我更聪明的 Android Studio。 Android Studio 没有将 android.R 识别为资源,所以我认为没有这样的东西,但是当我开始输入完整路径 'android.R.anim.slide_in_left' 时,Android Studio 把它捡起来了。所以我的解决方案现在看起来像这样:

getSupportFragmentManager()
                    .beginTransaction()
                    .addToBackStack(null)
                    .setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right, android.R.anim.slide_in_left, android.R.anim.slide_out_right)
                    .replace(R.id.fragment_holder, settingsFragment)
                    .commit();

【问题讨论】:

    标签: android android-fragments fragmentmanager


    【解决方案1】:

    getSupportFragmentManager()
    .beginTransaction()
    .addToBackStack(null)
    .setCustomAnimations(R.anim.enter, R.anim.exit, R.anim.popEnter, R.anim.popExit )
    .replace(R.id.fragment_holder, settingsFragment)
    .commit();

    【讨论】:

    • 这看起来是一个简单又不错的解决方案,但是我在R.anim下没有任何动画内容... android不提供任何默认动画吗?我可以使用 Android SDK Manager 或从其他地方下载一些默认动画吗?通常我只会制作一些 XML 动画或从 stackoverflow 复制粘贴,但我想知道什么是聪明的方法。
    • 你应该依赖这个答案stackoverflow.com/questions/22692837/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多