有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android ViewPager添加带有fadein/out动画的幻灯片以在视图之间切换

我使用ViewPager实现自己的图像库。视图由ImageView组成。用户通常可以使用手势在图像之间导航(如ViewPager

我想添加的是幻灯片功能。当用户从菜单中选择“slideshow”选项时,我希望能够启动ViewPager项的动画-理想情况下,动画将是图像/幻灯片之间的淡入/淡出效果

是否可以通过ViewPager实现这一点


共 (1) 个答案

  1. # 1 楼答案

    我是这样做的。首先,我使用了大量来自Android Displaying Bitmaps in Your UI tutorial的代码

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

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

    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);
    }