gpt4 book ai didi

android - 如何动画 fragment 移除

转载 作者:IT老高 更新时间:2023-10-28 21:48:49 24 4
gpt4 key购买 nike

我想为 fragment 的移除制作动画。

我试过了:

getSupportFragmentManager().beginTransaction()
.setCustomAnimations(R.anim.push_down_in, R.anim.push_up_out)
.remove(myFragment)
.commit();

但是 fragment 就消失了。

我注意到 out 动画只播放“替换”,所以我尝试用这样的空 fragment 替换 fragment :

getSupportFragmentManager()
.beginTransaction()
.setCustomAnimations(R.anim.push_down_in, R.anim.push_up_out)
.replace(viewId, new Fragment())
.commit();

但它仍然只是消失消失了。

那么,如何为 fragment 的移除设置动画?

最佳答案

我在遇到类似问题时看到了这个,我只是想写个简短的笔记。

与其创建一个虚拟 fragment 来替换现有 fragment ,我认为您应该为当前 fragment View 设置动画。动画结束后,您可以简单地移除 fragment 。

这就是我的做法:

final FragmentActivity a = getSherlockActivity();

if (a != null) {
//Your animation
Animation animation = AnimationUtils.loadAnimation(a, R.anim.bottom_out);
animation.setDuration(getResources().getInteger(android.R.integer.config_shortAnimTime));

//You can use AnimationListener, MagicAnimationListener is simply a class extending it.
animation.setAnimationListener(new MagicAnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
//This is the key, when the animation is finished, remove the fragment.
try {
FragmentTransaction ft = a.getSupportFragmentManager().beginTransaction();
ft.remove(RestTimerFragment.this);
ft.commitAllowingStateLoss();
} catch (Exception e) {
e.printStackTrace();
}
}
});

//Start the animation.
getView().startAnimation(animation);
}

关于android - 如何动画 fragment 移除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13982240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com