2013-06-23 2 views
-2

Была небольшая проблема. Моя анимация не работает. Я не получаю никаких ошибок. Просто моя анимация не работает.Анимация не работает

Это мой код.

public class MainActivity extends FragmentActivity { 

    private PagerAdapter mPagerAdapter; 

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

     this.initialisePaging(); 
    } 

    private void initialisePaging() { 

     List<Fragment> fragments = new Vector<Fragment>(); 
     fragments.add(Fragment.instantiate(this, Tab1Fragment.class.getName())); 
     fragments.add(Fragment.instantiate(this, Tab2Fragment.class.getName())); 
     fragments.add(Fragment.instantiate(this, Tab3Fragment.class.getName())); 
     this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(), fragments); 

     ViewPager pager = (ViewPager)super.findViewById(R.id.pager); 
     pager.setAdapter(this.mPagerAdapter); 
     pager.setPageTransformer(true, new ZoomOutPageTransformer()); 
    } 

    public static class Tab1Fragment extends Fragment { 

     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      if (container == null) { 
       return null; 
      } 
      return (ImageView)inflater.inflate(R.layout.tab_frag1_layout, container, false); 
     } 
    } 

    public static class Tab2Fragment extends Fragment { 

     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      if (container == null) { 
       return null; 
      } 
      return (ImageView)inflater.inflate(R.layout.tab_frag2_layout, container, false); 
     } 
    } 

    public static class Tab3Fragment extends Fragment { 

     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      if (container == null) { 
       return null; 
      } 
      return (ImageView)inflater.inflate(R.layout.tab_frag3_layout, container, false); 
     } 
    } 

    public static class PagerAdapter extends FragmentPagerAdapter { 

     private List<Fragment> fragments; 

     public PagerAdapter(FragmentManager fm, List<Fragment> fragments) { 
      super(fm); 
      this.fragments = fragments; 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return this.fragments.get(position); 
     } 

     @Override 
     public int getCount() { 
      return this.fragments.size(); 
     } 
    } 

    public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { 
     private static final float MIN_SCALE = 0.85f; 
     private static final float MIN_ALPHA = 0.5f; 

     public void transformPage(View view, float position) { 
      int pageWidth = view.getWidth(); 
      int pageHeight = view.getHeight(); 

      if (position < -1) { // [-Infinity,-1) 
       // This page is way off-screen to the left. 
//    view.setAlpha(0); 
       ViewHelper.setAlpha(view, 0); 

      } else if (position <= 1) { // [-1,1] 
       // Modify the default slide transition to shrink the page as well 
       float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position)); 
       float vertMargin = pageHeight * (1 - scaleFactor)/2; 
       float horzMargin = pageWidth * (1 - scaleFactor)/2; 
       if (position < 0) { 
//     view.setTranslationX(horzMargin - vertMargin/2); 
        ViewHelper.setTranslationX(view, horzMargin - vertMargin/2); 
       } else { 
//     view.setTranslationX(-horzMargin + vertMargin/2); 
        ViewHelper.setTranslationX(view, -horzMargin + vertMargin/2); 
       } 

       // Scale the page down (between MIN_SCALE and 1) 
//    view.setScaleX(scaleFactor); 
//    view.setScaleY(scaleFactor); 
       ViewHelper.setScaleX(view, scaleFactor); 
       ViewHelper.setScaleY(view, scaleFactor); 

       // Fade the page relative to its size. 
//    view.setAlpha(MIN_ALPHA + 
//      (scaleFactor - MIN_SCALE)/
//      (1 - MIN_SCALE) * (1 - MIN_ALPHA)); 

       ViewHelper.setAlpha(view, MIN_ALPHA + 
         (scaleFactor - MIN_SCALE)/
         (1 - MIN_SCALE) * (1 - MIN_ALPHA)); 

      } else { // (1,+Infinity] 
       // This page is way off-screen to the right. 
//    view.setAlpha(0); 
       ViewHelper.setAlpha(view, 0); 
      } 
     } 
    } 
} 

Все остальное работает нормально. Я хочу реализовать this., пожалуйста, помогите мне.

Прежде, чем я осуществил без использования NineOldroids. Но даже после его реализации это не сработало.

+0

Где код для анимации? – Plato

+0

проверьте этот класс ZoomOutPageTransformer. –

+0

Оставьте комментарий, если вы думаете, что мой код имеет какие-то технические недостатки, а не просто проголосовать. Это поможет мне исправить и улучшить мои стандарты кодирования. Так или иначе. Благодарю. –

ответ

0

Это не работает в эмуляторе с платформой Android 2.2, но когда я зарегистрировался на своем телефоне Sony Xperia Tipo Dual с ICS в качестве платформы, он работал.

1

Я также есть эта проблема проверка this answer. Использование девятидвухдвуфер должно работать, но PageTransform игнорируется в pre 11 (Heneycomb), хотя он находится в библиотеке поддержки. Я подумываю о переходе к флиппиру, чтобы сделать анимацию. Но я все еще ищу другой способ.

EDIT: Запишите мой ответ в этом Вопросе, чтобы узнать, как я решил проблему. Я просто скопировал класс viewpager и удалил оператор if, который проверял версию SDK в setPageTransformer