我有一项活动,其中有2个片段会根据按钮点击而改变。
我希望在更换时出现动画,所以我搜索了代码,这就是我的结论:
public void displayView(int page){
switch (page){
case 1:
FragmentHome fragmentHome = new FragmentHome();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment, fragmentHome)
.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out).commit();
break;
case 2:
FragmentHomeBack fragmentHomeBack = new FragmentHomeBack();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment, fragmentHomeBack)
.setCustomAnimations(android.R.anim.accelerate_decelerate_interpolator, android.R.anim.anticipate_interpolator).commit();
break;
}
}
我不知道为什么但是动画不起作用,新片段只是替换了另一个没有动画。
这是活动布局代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_master"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/space10"
tools:context="context">
<include
android:id="@+id/ll_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/space5"
android:orientation="vertical"
android:layout_marginLeft="@dimen/space5"
android:layout_marginRight="@dimen/space15"
layout="@layout/menu"
android:layout_alignParentTop="true"
android:layout_above="@+id/imageView" />
<FrameLayout
android:id="@+id/fragment_holder"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_toRightOf="@id/ll_left">
</FrameLayout>
<ImageView
app:srcCompat="@drawable/xlink"
android:id="@+id/imageView"
android:layout_width="150dp"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:scaleType="fitEnd"
android:layout_height="70dp" />
框架布局&#34; fragment_holder&#34;是片段的所在。
感谢大家!
答案 0 :(得分:4)
那应该是好玩的伙伴。我有相同的代码,效果很好。
getSupportFragmentManager()
.beginTransaction()
.setCustomAnimations(android.R.anim.fade_in,android.R.anim.fade_out)
.replace(R.id.layout_container, fragment)
.commit();
但是...
我看到我们的代码有什么不同。尝试在替换之前设置customAnimations以查看会发生什么。
我有一个改进代码的建议。在你的&#34;如果&#34;或&#34;切换&#34;语句将片段设置为
Fragment fragment;
if(page==0){
fragment = new MyFragment();
}else{
fragment = new MySecondFragment();
}
然后你只有这个代码一次
getChildFragmentManager()
.beginTransaction()
.setCustomAnimations(android.R.anim.fade_in,android.R.anim.fade_out)
.replace(R.id.layout_container, fragment)
.commit();