在 PagerAdapter 的片段中使用动画

Using animations in fragments of PagerAdapter

我正在尝试在每个片段中使用一些动画来执行 SwipeViews。例如,我想将按钮的 alpha 从 0 更改为 1。

我写了动画

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<alpha
    android:duration="2000"
    android:fromAlpha="0.0"
    android:interpolator="@android:anim/linear_interpolator"
    android:toAlpha="1.0"/>
</set> 

而且我正在使用 PagerAdapter 和这样的片段

public class FragmentOne extends Fragment {
private Button bw;
private Animation anim;
private Context CON;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    CON=container.getContext();
    View vw = inflater.inflate(R.layout.fragemnt1,container,false);
    bw=(Button)vw.findViewById(R.id.button);
    anim= AnimationUtils.loadAnimation(CON,R.anim.animacia);
    bw.startAnimation(anim);
    return inflater.inflate(R.layout.fragemnt1,container,false);
}
}

有布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F20C36" >


<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Button"
    android:id="@+id/button"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="60dp"
    android:visibility="invisible"/>


</RelativeLayout>

但是那些动画不起作用。什么都没发生。有人可以帮助我吗?

编辑:我的 PagerAdapter 的实现

public class PagerAdapter extends FragmentPagerAdapter {

Context CON;
public PagerAdapter(FragmentManager fm,Context con) {
    super(fm);
    CON=con;
    // TODO Auto-generated constructor stub
}

@Override
public Fragment getItem(int arg0) {
    // TODO Auto-generated method stub
    switch (arg0) {
        case 0:

            return new FragmentOne();
        case 1:
            return new FragmentTwo();
        case 2:
            return new FragmentThree();

        default:
            break;
    }
    return null;
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return 3;
}


}

您的按钮不可见。您是否将可见性标签设置为在某处可见?

此外,片段可能会在片段显示给用户之前启动 onCreateView 方法,因为 PagerAdapter 可以随时准备显示,具体取决于您的应用程序。所以你可能需要一个 setOnTabSelectedListener

如果您将 TabLayout 与您的 PagerAdapter 一起使用,您可以这样做:

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);

    tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager) {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            super.onTabSelected(tab);
            //start animation here
        }
    });