Использование анимации во фрагментах PagerAdapter

Я пытаюсь сделать SwipeViews с некоторыми анимациями в каждом фрагменте. Например, я хотел бы изменить альфа кнопки с 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;
}


}

1 ответ

Ваша кнопка невидима. Вы устанавливаете тег видимости где-то видимым?

Также фрагмент может запустить метод 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
        }
    });
Другие вопросы по тегам