2016-02-28 2 views
0

Я пытаюсь сделать SwipeView с некоторыми анимациями в каждом фрагменте. Например, я хотел бы изменить альфа кнопки от 0 до 1.Использование анимации в фрагментах PagerAdapter

Я написал анимацию

<?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 с fragmets как этот

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> 

но эти анимации не работают. Ничего не произошло. Может ли кто-нибудь мне помочь?

EDIT: Выполнение моего 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; 
} 


} 

ответ

0

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

Также фрагмент может начать метод 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 
     } 
    }); 
+0

Что-то вроде OnTabSelectedListener, вероятно, что я искал. Но как я могу реализовать его, используя PagerAdapter? –

+0

Это зависит от того, как вы реализуете свой PagerAdapter, может быть, вы могли бы поделиться еще немного своего кода, а не только фрагмента. Я отредактировал ответ на пример того, как это можно сделать TabLayout – user5994441

+0

Я добавил реализацию моего PagerAdapter –

Смежные вопросы