2012-05-14 61 views
4

我使用ViewPager來實現我自己的圖片庫。意見由ImageView s組成。用戶通常可以使用手勢在圖像之間導航(如ViewPager)。Android ViewPager - 添加帶淡入/淡出動畫的幻燈片以切換視圖

我想添加的是幻燈片功能。當用戶從菜單中選擇「幻燈片放映」選項時,我希望能夠開始ViewPager項目的動畫 - 理想情況下,動畫將是圖像/幻燈片之間的淡入/淡出效果。

是否可以使用ViewPager來實現?

回答

6

下面是我做到的。首先,我使用了很多來自Android Displaying Bitmaps in Your UI tutorial的代碼。

然後,我添加了以下調整:

在活動的OnCreate包含ViewPager:

mPager.setOnPageChangeListener(new OnPageChangeListener() { 

     @Override 
     public void onPageSelected(int arg0) { 

      PhotoViewerFragment currentFragment = mAdapter 
        .getFragment(arg0); 
      if (currentFragment != null) { 

       if (mRunningSlideshow) { 
        currentFragment.addImageTransition(); 
       } 

      } 

     } 

     @Override 
     public void onPageScrollStateChanged(int arg0) { 
      // TODO Auto-generated method stub 
     } 

     @Override 
     public void onPageScrolled(int arg0, float arg1, int arg2) { 
      // TODO Auto-generated method stub 
     } 

    }); 

Runnable的是,在活動運行幻燈片包含ViewPager:

private Runnable runSlideshow = new Runnable() { 
     public void run() { 
      // Second parameter of false turns ViewPager scroll animation off 
      mPager.setCurrentItem(mPager.getCurrentItem() + 1, false); 
      mSlideshowHandler.postDelayed(runSlideshow, 
       SLIDESHOW_IMAGE_DURATION); 
    } 
}; 

在顯示圖像的片段中:

private static final int FADE_IN_TIME = 200; 

/** 
* Adds fade-in transition when in slideshow mode. Called from PhotoViewerActivity. 
*/ 
public void addImageTransition() { 
    // Transition drawable with a transparent drawable and the final bitmap 
    final TransitionDrawable td = new TransitionDrawable(new Drawable[] { 
      new ColorDrawable(android.R.color.transparent), 
      mImageView.getDrawable() }); 

    mImageView.setImageDrawable(td); 
    td.startTransition(FADE_IN_TIME); 
} 
+0

我也試圖實現這一點。什麼是mRunningSlideshow?我不斷收到一個空指針。我在創建片段之前添加了轉場。 –

+0

mRunningSlideshow是一個布爾值,用於跟蹤用戶是否選擇了幻燈片模式(他們也可以選擇手動掃描照片)。不知道在空指針,對不起......我甚至不再在這個項目上工作,所以沒有設置運行代碼。 – inky

相關問題