Niz*_*zam 24 android android-fragments
我有以下代码来设置片段的进入和退出动画.
final FragmentManager manager = getSupportFragmentManager();
final FragmentTransaction ft = manager.beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right);
ft.replace(R.id.container, fragment, tag);
ft.addToBackStack(tag);
ft.commitAllowingStateLoss();
Run Code Online (Sandbox Code Playgroud)
slide_in_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%"
android:toXDelta="0%"
android:duration="@integer/slide_anim_duration" />
</set>
Run Code Online (Sandbox Code Playgroud)
对所有其他动画使用相同的方法.在所有其他版本中工作正常,但问题仅在于Lollipop.正如我们在看功能
setCustomAnimations (int enter, int exit, int popEnter, int popExit) 文档链接,
enter并且exit工作正常,但popEnter和popExit在棒棒糖失败.
请指导我出了什么问题,并提供适用于Android 2.3到5.1的兼容解决方案
更新:
仔细观察,似乎动画就在那里,但持续时间没有影响.
您还可以在所有片段中尝试 onCreateAnimator...或者它们正在扩展的基本片段...
@target_api 20 or higher
@Override
public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) {
if (enter) {
return AnimatorInflater.loadAnimator(getActivity(), R.animator.slide_in_top);
} else {
return AnimatorInflater.loadAnimator(getActivity(), R.animator.fade_out);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,上述两个动画师都是预先定义的,并且 R 中有 android.R
希望这有助于欢呼!
| 归档时间: |
|
| 查看次数: |
1576 次 |
| 最近记录: |