Использование анимации во фрагментах 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
}
});