Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用viewpager android的屏幕幻灯片显示_Android_Timer_Android Viewpager - Fatal编程技术网

使用viewpager android的屏幕幻灯片显示

使用viewpager android的屏幕幻灯片显示,android,timer,android-viewpager,Android,Timer,Android Viewpager,我正在开发一个android应用程序,我想在其中创建一个屏幕幻灯片。我利用viewpager在屏幕之间滑动,并利用java定时器每5秒自动播放一次幻灯片 问题是,我无法实现从一个屏幕到另一个屏幕的缓慢平稳过渡。5秒钟结束后,它立即移动到下一个屏幕。我需要一个缓慢而平稳的过渡。可能吗?。请查看下面我的计时器代码和查看寻呼机代码 public void slideshowtimer() { t.scheduleAtFixedRate(new TimerTask()

我正在开发一个android应用程序,我想在其中创建一个屏幕幻灯片。我利用viewpager在屏幕之间滑动,并利用java定时器每5秒自动播放一次幻灯片

问题是,我无法实现从一个屏幕到另一个屏幕的缓慢平稳过渡。5秒钟结束后,它立即移动到下一个屏幕。我需要一个缓慢而平稳的过渡。可能吗?。请查看下面我的计时器代码和查看寻呼机代码

     public void slideshowtimer()
     {
      t.scheduleAtFixedRate(new TimerTask() 
       {

        @Override
        public void run() 
        {
            runOnUiThread(new Runnable() 
            {

                public void run() 
                {
                    Log.e("inside", "timer - "  + viewPagerCurrentItem);

                    myPager.setCurrentItem(viewPagerCurrentItem++);

                }

            });
        }

    }, 0, 5000);
}



              @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    t = new Timer();

    MyPagerAdapter adapter = new MyPagerAdapter();
    myPager = (ViewPager) findViewById(R.id.viewPager);
    myPager.setAdapter(adapter);

    slideshowtimer();

    //myPager.setCurrentItem(0);
}





private class MyPagerAdapter extends PagerAdapter {

    public int getCount() {
        return 3;
    }

    public Object instantiateItem(View collection, int position) {

        LayoutInflater inflater = (LayoutInflater) collection.getContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        int resId = 0;
        switch (position) {
        case 0:                         

            //  resId = LayoutOne.newInstance(_context);    

            resId = R.layout.layout_one;
            break;
        case 1:
            resId = R.layout.layout_two;
            break;
        case 2:
            resId = R.layout.layout_third;
            break;

        }

        View view = inflater.inflate(resId, null);

        ((ViewPager) collection).addView(view, 0);

        return view;
    }

请帮忙,谢谢

您是否尝试将“平滑滚动”设置为true?看看这个方法

您是否尝试将自己的滚动条添加到ViewPager中。可以使用scroll类中的持续时间将滚动动画设置为显示。 我是这样做的:

viewFlow=(ViewPager)findViewById(R.id.presentationViewPager);
try {
        Field mScroller;
        Interpolator sInterpolator = new DecelerateInterpolator();
        mScroller = ViewPager.class.getDeclaredField("mScroller");
        mScroller.setAccessible(true); 
        FixedSpeedScroller scroller = new FixedSpeedScroller(viewFlow.getContext(),   sInterpolator);
        // scroller.setFixedDuration(5000);
        mScroller.set(viewFlow, scroller);
    } catch (NoSuchFieldException e) {
    } catch (IllegalArgumentException e) {
    } catch (IllegalAccessException e) {
    }
这是我的滚动条代码:

public class FixedSpeedScroller extends Scroller {

private int mDuration = 600;

public FixedSpeedScroller(Context context) {
    super(context);
}

public FixedSpeedScroller(Context context, Interpolator interpolator) {
    super(context, interpolator);
}

public FixedSpeedScroller(Context context,Interpolator interpolator, boolean flywheel) {
    super(context, interpolator, flywheel);
}


@Override
public void startScroll(int startX, int startY, int dx, int dy, int duration) {
    // Ignore received duration, use fixed one instead
    super.startScroll(startX, startY, dx, dy, mDuration);
}

@Override
public void startScroll(int startX, int startY, int dx, int dy) {
    // Ignore received duration, use fixed one instead
    super.startScroll(startX, startY, dx, dy, mDuration);
}

}

我现在就试过了,但没有什么不同。我仍然会立即从一个屏幕切换到另一个屏幕。这就是我尝试的_mViewPager.setCurrentItem(viewPagerRetentitem++,true);该方法似乎有问题,看看这个问题:除此之外,您可以尝试不使用ViewPager,而是用FragmentTransaction替换片段并设置动画。请尝试此链接以自动滚动ViewPager。