Android ViewPager - 添加幻灯片式渐入淡出动画以在视图之间进行切换

4
我使用ViewPager来实现自己的图库。视图由ImageView组成。用户可以使用手势(如在ViewPager中)正常浏览图像。
我想添加的是幻灯片放映功能。当用户从菜单中选择“幻灯片放映”选项时,我希望能够启动 ViewPager 项目的动画 - 理想情况下,动画应该是图像/幻灯片之间的淡入/淡出效果。
是否可以使用ViewPager来实现这个功能?
1个回答

6

以下是我是如何做到的。首先,我使用了许多Android 在您的 UI 中显示位图教程中的代码。

然后,我添加了以下调整:

在包含 ViewPager 的活动的 OnCreate 中:

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
        }

    });

在包含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);
}

我也在尝试实现这个。mRunningSlideshow是什么?我一直得到一个空指针。我正在创建片段之前添加转换。 - Nelson.b.austin
mRunningSlideshow是一个布尔值,用于跟踪用户是否选择了幻灯片模式(他们也可以选择手动滑动照片)。对于空指针我不确定,抱歉...我甚至不再参与这个项目,所以没有设置代码来运行。 - inky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接