破碎动画的视频:http://www.youtube.com/watch?v=xnPbEj-Wosg&feature=youtu.be 原始片段具有全紫色背景,目标片段具有白色背景,仅在屏幕的上半部分正常发生转换。
目前我的Android应用程序运行一个主要活动,并使用FragmentManager到.replace()片段来更改布局。
在初始片段A中,存在一个EditText,当使用以下代码按下“done”时,它会更改活动片段。
FragmentTransaction ft = getActivity()
.getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.right_slide_in, R.anim.right_slide_out);
ft.replace(R.id.frameLayout_main, fragment);
ft.addToBackStack(null);
ft.commit();
上面的自定义动画使用非常标准的翻译进行滑入和滑出:
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator">
<translate
android:fromXDelta="100%p"
android:toXDelta="0"
android:duration="400"
/>
</set>
此外,我在转换过程中使用以下代码关闭软件键盘:
InputMethodManager manager = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
manager.toggleSoftInput(0, 0);
当这一切都发生时,我在4.4设备上看到的是键盘关闭(向下滑动),屏幕的上半部分过渡(滑出),但屏幕的下半部分是键盘曾经是在过渡动画期间只是空白。
我尝试了各种其他方法来关闭软键盘,以及将键盘关闭代码移动到FragmentTransition代码之前/之后。我尝试过的所有内容都会产生与上述相同的结果。
我正在寻找的解决方案是软键盘覆盖的原始片段的一部分被显示并平滑过渡到下一个片段。
编辑:尝试使用android.app.Fragment而不是使用support.v4,结果是一样的。