我有一个片段在添加时会滑入,并在移除时从屏幕向右滑动。但是,只有动画中的滑动才有效,当我将片段的可见性设置为消失时,它会消失而不会滑动。这也是我在这里的第一篇文章,所以如果我没有做对,请告诉我,谢谢!
protected void onCreate(Bundle savedInstanceState) {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.animator.slide_in, R.animator.slide_out_right);
Bundle bundle = new Bundle();
MyFragment myFrag = new MyFragment();
myFrag.setArguments(bundle);
ft.add(R.id.challenger_preview_fragment_container, myFrag, "MyFragment");
ft.commit();
}
public void removeFragment() {
getView().setVisibility(View.GONE);
}
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:propertyName="x"
android:valueFrom="1000"
android:valueTo="0"
android:valueType="floatType" />
</set>
<?xml version="1.0" encoding="utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:interpolator/accelerate_decelerate"
android:valueFrom="-1280"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="X"
android:duration="2000" />
</set>
答案 0 :(得分:2)
尝试下面的代码,在下面创建一个向右滑动的动画对象并设置持续时间。稍后创建一个侦听器以了解动画何时结束,以便您可以隐藏视图。
上述代码中的问题是您在动画结束前隐藏了视图。
Animation animation = AnimationUtils.loadAnimation(getActivity(),R.animator.slide_out_right);
animation.setDuration(800);
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
try {
getView().setVisibility(View.GONE);
} catch (Exception e) {
e.printStackTrace();
}
}
});
//Start the animation.
getView().startAnimation(animation);
答案 1 :(得分:1)
您正在设置可见性getView().setVisibility(View.GONE);
因此片段无法再次返回GONE
尝试getView().setVisibility(View.INVISIBLE);
当它返回时,再次将其显示为getView().setVisibility(View.VISIBLE);