gpt4 book ai didi

android - fragment 交易动画 : slide in and slide out

转载 作者:IT老高 更新时间:2023-10-28 13:07:05 28 4
gpt4 key购买 nike

我查看了一些关于 fragment 之间的动画交易的教程。我已经将这种方法用于动画并且效果很好:

fragmentTransaction.setCustomAnimations(android.R.anim.slide_in_left,
android.R.anim.slide_out_right);

但我想反转这个动画:旧 fragment 向左滑出,新 fragment 向右滑入,但 R.anim 文件的值似乎对我的范围没有用.

我该怎么做?

最佳答案

更新 For Android v19+ see this link通过@Sandra

您可以创建自己的动画。将动画 XML 文件放入 res > anim

enter_from_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="-100%p" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>

enter_from_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="100%p" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="@android:integer/config_mediumAnimTime" />
</set>

exit_to_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="0%" android:toXDelta="-100%p"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>

exit_to_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="0%" android:toXDelta="100%p"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="@android:integer/config_mediumAnimTime" />
</set>

您可以将持续时间更改为较短的动画时间

android:duration="@android:integer/config_shortAnimTime"

或较长的动画时间

android:duration="@android:integer/config_longAnimTime" 

用法(请注意,您在事务中调用方法的顺序很重要。在调用 .replace、.commit 之前添加动画):

FragmentTransaction transaction = supportFragmentManager.beginTransaction();
transaction.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left, R.anim.enter_from_left, R.anim.exit_to_right);
transaction.replace(R.id.content_frame, fragment);
transaction.addToBackStack(null);
transaction.commit();

关于android - fragment 交易动画 : slide in and slide out,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21026409/

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