2015-11-05 26 views
0

我正在使用viewpager變壓器。我可以使用transformPage()方法添加轉換效果。下面給出的是我的傳呼機。如何在PagerTransform動畫之後在ViewPager中動畫一個項目?

final ViewPager pager = (ViewPager) localView 
      .findViewById(R.id.pager); 
pager.setAdapter(new my_adapter()); 
pager.setPageTransformer(true, new PageTransformer() { 

     @Override 
     public void transformPage(View view, float position) { 

      int pageWidth = view.getWidth(); 

      if (position < -1) { // [-Infinity,-1) 
       // This page is way off-screen to the left. 
       view.setAlpha(1); 
      } else if (position <= 1) { // [-1,1] 
       View dummyImageView = view.findViewById(R.id.tourImage); 
       dummyImageView.setTranslationX(-position 
          * (pageWidth/2)); // Half 
       View imageBottom = view 
          .findViewById(R.id.tour_bottom_image); 
       imageBottom.setTranslationX(-position 
          * (pageWidth/10)); // Half speed 
      } else { // (1,+Infinity] 
       // This page is way off-screen to the right. 
       view.setAlpha(1); 

      } 
     } 
    }); 

這是我的適配器,

private class my_adapter extends PagerAdapter { 

    @Override 
    public int getCount() { 
     return num_pages; 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object o) { 
     return view == o; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     container.removeView((View) object); 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     View new_view = null; 
     LayoutInflater inflater = getActivity().getLayoutInflater(); 
     new_view = inflater.inflate(R.layout.tour_page_one, null); 
     TextView tvTourDesc = (TextView) new_view 
        .findViewById(R.id.tourDesc); 
     ImageView imageTour = (ImageView) new_view 
        .findViewById(R.id.tourImage); 
     ImageView imageBottomTour = (ImageView) new_view 
        .findViewById(R.id.tour_bottom_image); 

     container.addView(new_view); 
     return new_view; 
    } 
} 

我所試圖做的是在適配器動畫的項目,比如imageTour ImageView的,一旦過渡動畫完成。當我添加任何動畫時,它將與分頁器轉換動畫一起開始。我想在轉換動畫之後始終對其進行動畫處理。我嘗試使用onPageChangeListener與傳呼機,但它不會返回除當前頁碼以外的任何視圖,以便我可以將動畫添加到imageTour(imageView)。

回答

1

在你transformPage()方法:

if (position == 0.0) { // page is settled in center 
    // add animation to image 
    // start the animation 
} 
0

我知道一個老問題,但也許有人需要它,但。

AnimateMyView(yourViewPager.getChildAt(position).findViewById(R.id.id_your_item_like_image_view)); 

    void AnimateMyView(View v){ 
     Animation anim = AnimationUtils.loadAnimation(this, 
       R.anim.anim); 
     v.startAnimation(anim); 
    } 

通過我上getChildAt(位置)代碼和getChildAt一些錯誤的方式(mViewPager.getChildCount() - 1)固定我的問題。所以你可能需要這樣更改代碼:

AnimateMyView(yourViewPager.getChildAt(mViewPager.getChildCount()-1).findViewById(R.id.id_your_item_like_image_view));