2016-12-31 2 views
1

Я хочу показать несколько изображений как очень простую анимацию в viewPager (каждая страница ViewPager имеет другую анимацию). Мой ViewPager код:Как показать/запустить анимацию на каждой странице viewPager в android?

public class Sport2Activity extends AppCompatActivity { 
private SectionsPagerAdapter mSectionsPagerAdapter; 
private ViewPager mViewPager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_sport1); 

    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 

    mViewPager = (ViewPager) findViewById(R.id.container); 
    mViewPager.setAdapter(mSectionsPagerAdapter); 


    // tab layout for circle of view pager 
    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabDots); 
    tabLayout.setupWithViewPager(mViewPager); 

} 

//********Adapter class********************************************************* 
public class SectionsPagerAdapter extends FragmentPagerAdapter { 
    public SectionsPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
      case 0: 
       return new EyeSportFragment(); 
       //return FragmentWithOneImage.newInstance("Fragment 1", R.drawable.android_1); 
      case 1: 
       return new FingerSportFragment(); 
      case 2: 
       return new NeckSportFinger(); 
      case 3: 
       return new WristSportFragment(); 
      case 4: 
       return new ShoulderSportFragment(); 
      case 5: 
       return new BackSportFragment(); 
      case 6: 
       return new WaterFragment(); 
      default: 
       return null; 
     } 
    } 

    @Override 
    public int getCount() { // Show 3 total pages. 
     return 7; 
    } 

и анимация класс:

public class BackSportFragment extends Fragment { 
    private ImageView sportShowing_img; 

    public BackSportFragment() { 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_sport_show, container, false); 
     sportShowing_img= (ImageView) view.findViewById(R.id.sport_img); 



     AnimationDrawable animation = new AnimationDrawable(); 
     animation.addFrame(getResources().getDrawable(R.drawable.ic_action_hardware_keyboard_arrow_left), 1000); //1 Sec 
     animation.addFrame(getResources().getDrawable(R.drawable.ic_action_action_home), 1000); //1 Sec 
     animation.addFrame(getResources().getDrawable(R.drawable.cast_ic_notification_1), 1000); //1 Sec 
     animation.addFrame(getResources().getDrawable(R.drawable.common_google_signin_btn_icon_light), 1000); //1 Sec 
     animation.setOneShot(true); 

     sportShowing_img.setBackgroundDrawable(animation); 
     animation.start(); 

     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       sportShowing_img.setVisibility(View.INVISIBLE); 
      } 
     }, 10000); 
     return view; 
    } 

} 

, как я могу сделать ViewPager, что с щелчком/прокрутки на каждой странице, ее анимации пусков?

ответ

1

Реализовать OnPageChangeListener [интерфейс обратного вызова для реагирования на изменения состояния выбранной страницы] интерфейса на вашем Activity

Определение метода onPageSelected(), как показано ниже:

@Override 
public abstract void onPageSelected (int position){ 
    Toast.makeText(getActivity(),"In the page " + position, 
      Toast.LENGTH_SHORT).show(); 
// depends on the position display your relevant animation 
} 

И не забудьте позвонить

viewPager.setOnPageChangeListener(this); 
+0

i create 'public static boolean anim_started = false;' в классе Фрагментов. где я должен положить метод 'if' и проверить его значение? –

+0

не получил вашу настоящую проблему. у вас есть каждая анимация в каждом фрагменте справа.? если да, то анимации будут загружаться внутри фрагментов, тогда у вас не будет prblem .. это то, что вы делаете или что-то еще. Если вы хотите использовать bool и avoild, загрузите следующий, пока анимация не закончится, но она не будет удобна для пользователя. –

+0

i find мой ответ! 'animation.setOneShot (true);' должен удалить. –

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